为什么带有noSuchMethod的类不能分配给函数?

时间:2019-02-15 17:13:34

标签: dart

Dart允许类使用callnoSuchMethod方法像函数一样发挥作用。

请考虑以下课程:

class Wrapper<T extends Function> {
  Wrapper(this._function);

  final T _function;

  @override
  noSuchMethod(Invocation invocation) {
    return Function.apply(
      _function,
      invocation.positionalArguments,
      invocation.namedArguments,
    );
  }
}

使用此类,完全有可能将其用作如下功能:

dynamic myFunction = Wrapper((int foo) => foo);
print(myFunction(42)); // prints 42

但是这个dynamic困扰着我很多。如果我们删除它,则将类分配给函数将不会编译(也不会进行强制转换):

int Function(int) myFunction = Wrapper((int foo) => foo);
  

'Wrapper <(int)→int>'类型的值不能分配给'(int)→int'类型的变量。

那是为什么,我该怎么做才能删除此dynamic

0 个答案:

没有答案