1

我有以下顶级课程:

class Example(shared String first = "default one", shared String second = "default two") {
}

现在,我想使用 的显式值来实例化这个类first,但使用 的默认值second

我知道如何通过使用命名参数通过显式编译的代码来做到这一点:

void instantiateExample(String firstValue) {
    Example ex = Example { first = firstValue; };
    assert(ex.first == firstValue);
    assert(ex.second == "default two");
}

现在,我想做与上述代码相同的事情,但使用Class<Example, []|[String,String=]>对象。

4

1 回答 1

2

使用类模型是...

Class<Example,[]|[String, String=]> exampleModel = `Example`;
value e1 = exampleModel();
value e2 = exampleModel("foo");
value e3 = exampleModel("foo", "bar");

或者使用类声明它是......

ClassDeclaration exampleDeclaration = `class Example`;
assert(is Example e1 = exampleDeclaration.instantiate());
assert(is Example e2 = exampleDeclaration.instantiate([], "foo"));
assert(is Example e3 = exampleDeclaration.instantiate([], "foo", "bar"));

高温高压

于 2014-04-25T09:27:27.413 回答