Объедините вызов 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();
}
}
В Цейлоне это обычный рефакторинг для перехода от абстрактного класса с формальными методами к конкретному классу, параметризованному функциями.
НТН