Объедините вызов DSL-подобного construstor с объявлением анонимного класса

Является ли это возможным?
Я попробовал что-то вроде этого:

object foo extends Foo {
    constructorNamedArg = "qqq";
} {
    abstractMethod() => bar.baz();
}

2 ответа

Решение

Согласно спецификации, это невозможно, может быть только список позиционных аргументов.

Я бы не использовал наследство для этого. Вместо этого я бы определил Foo как конкретный класс:

class Foo(String constructorNamedArg, Baz abstractMethod()) {}

А теперь на сайте звонка я бы написал:

Foo {
    constructorNamedArg = "qqq";
    abstractMethod() => bar.baz();
}

Или даже:

Foo {
    constructorNamedArg = "qqq";
    function abstractMethod() { 
        return bar.baz(); 
    }
}

В Цейлоне это обычный рефакторинг для перехода от абстрактного класса с формальными методами к конкретному классу, параметризованному функциями.

НТН

Другие вопросы по тегам