您可以为 Dart 中的函数添加属性吗?

Dan*_*son 2 javascript methods properties dynamic dart

您可以为 dart 中的函数添加属性吗?我试过这个:

void main(){

    fn(){
        //DoSomething
    };

    fn.id = 1; //Exception NoSuchMethod

}
Run Code Online (Sandbox Code Playgroud)

只是为了抛出 NoSuchMethod 异常。有没有什么方法可以像 JavaScript 一样在运行时向函数或任何类型的对象添加属性?

(另外,当我分配给属性时,为什么它说没有这样的方法异常?)

Ale*_*uin 6

您不能在Function上添加属性。但是,您可以定义一个Object可以像函数一样调用的函数(请参阅Dart 中的模拟函数)。这是一个例子:

class WannabeFunction {
  var id;
  call(int a, int b) => a + b;
}

main() {
  var wf = new WannabeFunction();
  wf.id = 1;
  wf(3, 4); // 7
}
Run Code Online (Sandbox Code Playgroud)

对于NoSuchMethodError: 当您使用时,您实际上调用fn.id = 1了隐式设置器。这就是你收到此错误的原因。id=fn