Function Dart类中的静态调用方法(使类可调用)

Function Dart类中的静态调用方法(使类可调用),function,class,call,dart,Function,Class,Call,Dart,对于嵌入式DSL,我希望类的行为类似于函数。对于instances()来说这似乎很容易,但对于类,我无法做到这一点。我尝试创建一个静态调用一个方法,但这也不起作用 有没有办法或者我必须给这个类起另一个名字,让Pconst成为一个函数,调用构造函数 类Pconst{ 最终价值; Pconst(该值); 静态Pconst调用(值)=>新Pconst(值); 字符串toString()=>“Pconst($value)”; } void main(){ var测试=Pconst(10); //异常中断

对于嵌入式DSL,我希望类的行为类似于函数。对于instances()来说这似乎很容易,但对于类,我无法做到这一点。我尝试创建一个静态调用一个方法,但这也不起作用

有没有办法或者我必须给这个类起另一个名字,让Pconst成为一个函数,调用构造函数

类Pconst{
最终价值;
Pconst(该值);
静态Pconst调用(值)=>新Pconst(值);
字符串toString()=>“Pconst($value)”;
}
void main(){
var测试=Pconst(10);
//异常中断:类“\u Type”没有实例方法“call”。
打印(“你好,$test”);
}
call()
方法是特殊的,因为定义
call()
方法的任何人都被假定为动态模拟函数。这允许我们使用
TestA
的实例,就好像它们是接受两个整数参数的函数一样


call()
方法是特殊的,因为定义
call()
方法的任何人都被假定为动态模拟函数。这使我们可以使用
TestA
的实例,就好像它们是接受两个整数参数的函数一样。

我会尝试以下方法:

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
}

因此,您基本上只是将类构造函数隐藏/包装在bog标准函数后面。

我会尝试以下方法:

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
}

因此,您基本上只是将类构造函数隐藏/包装在一个bog标准函数后面。

为什么需要Pconst作为类?您可以创建一个顶级函数Pconst(value){返回新的PconstImpl(value).call(value);}我必须承认,我不完全理解您想要实现什么。你能提供更多信息吗?我知道除了类之外还可以创建一个顶级函数,但我不想让我的命名空间混乱,我更希望类和函数/可调用类具有相同的名称。为什么你需要一个类?IMHO只有当您有一个参数化实例,在其中调用call(x)时,这才有意义。使用它的方式,你也可以使用一个函数(根本没有类)。我基本上想要一个不需要new关键字的构造函数,所以类是有意义的。我可能会使用另一个顶级函数调用构造函数。希望有捷径:/。无论如何谢谢你!构造函数如果您不需要新的关键字,但使用
new
表示它是一个构造函数,听起来好像您不知道您是想要一个基本函数还是一个构造函数,如果您想要一个创建新对象的函数,那么只需创建一个围绕构造函数的独立函数。为什么您需要Pconst成为一个类?您可以创建一个顶级函数Pconst(value){返回新的PconstImpl(value).call(value);}我必须承认,我不完全理解您想要实现什么。你能提供更多信息吗?我知道除了类之外还可以创建一个顶级函数,但我不想让我的命名空间混乱,我更希望类和函数/可调用类具有相同的名称。为什么你需要一个类?IMHO只有当您有一个参数化实例,在其中调用call(x)时,这才有意义。使用它的方式,你也可以使用一个函数(根本没有类)。我基本上想要一个不需要new关键字的构造函数,所以类是有意义的。我可能会使用另一个顶级函数调用构造函数。希望有捷径:/。无论如何谢谢你!构造函数不需要新的关键字,但使用
new
表示它是一个构造函数,听起来好像你不知道你是想要一个基本函数还是一个构造函数,如果你想要一个创建新对象的函数,那么只需创建一个围绕构造函数的独立函数即可。嗨,我知道call方法以及如何将其用于实例。我在寻找是否有办法创建直接可调用类。直接可调用类。。。听起来像是一个函数,就像其他人在问题的评论中说的一样。嗨,我知道call方法,以及它如何用于实例。我在寻找是否有办法创建直接可调用类。直接可调用类。。。听起来就像其他人在问题评论中所说的那样