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"));

HTH

于 2014-04-25T09:27:27.413 に答える