对于嵌入式DSL,我希望类表现得像一个函数。对于实例(https://www.dartlang.org/articles/emulating-functions/)来说似乎很容易,但是我无法在类中实现它。我尝试创建一个静态调用方法,但这也不起作用。
有没有办法或者我必须给该类起另一个名字并使Pconst成为函数,并调用构造函数?
class Pconst {
final value;
Pconst(this.value);
static Pconst call(value) => new Pconst(value);
String toString() => "Pconst($value)";
}
void main() {
var test = Pconst(10);
// Breaking on exception: Class '_Type' has no instance method 'call'.
print("Hello, $test");
}
最佳答案
我会尝试这样的事情:
class _PConst{
final value;
_Pconst(this.value);
String toString() => "Pconst($value)";
}
PConst(value){
return new _PConst(value);
}
void main() {
var test = Pconst(10);
print("Hello, $test"); //should work ok
}
因此,您基本上只是将类构造函数隐藏/包装在沼泽标准函数的后面。