将类似 DSL 的构造函数调用与匿名 class 声明相结合

Combine DSL-like construstor call with anonymous class declaration

可能吗?
我试过这样的事情:

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

根据the specification,这是不可能的,只能有位置参数列表。

我不会为此使用继承。相反,我会将 Foo 定义为具体的 class:

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

现在在呼叫站点我会写:

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

甚至:

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

在锡兰,从具有形式化方法的抽象 class 到由函数参数化的具体 class 是一种常见的重构。

HTH