如何将函数存储为类成员变量

ric*_*h.e 5 dart

在Dart中是否可以存储带有返回和参数类型信息的回调函数?看来我可以做到以下几点:

class MyClass {
  void addCallback( callback( int ) )
  {
    _callback = callback;
  }

  var _callback;
}
Run Code Online (Sandbox Code Playgroud)

但是我认为如果_callback没有声明它会很好var,而是有关于它的返回和参数类型的信息.我在文档中找不到相关信息,有人知道吗?

not*_*acs 8

Dart 2 支持函数类型语法:

class MyClass {
  void addCallback( callback( int ) )
  {
    _callback = callback;
  }

  void Function(int) _callback;
}
Run Code Online (Sandbox Code Playgroud)

有效省道设计指南指出,这种形式优于类型定义。


mon*_*r75 4

您可以typedef像这样使用函数签名:

typedef bool Filter(num x);

List<num> filterNumbers(List<num> numbers, Filter filter) {
  return numbers.where(filter).toList();
}
Run Code Online (Sandbox Code Playgroud)

有关更多此类信息,请查看这篇文章:https://www.dartlang.org/articles/idiomatic-dart/