【问题标题】:How to store function as class member variable如何将函数存储为类成员变量
【发布时间】:2014-11-05 02:09:26
【问题描述】:

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

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

  var _callback;
}

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

【问题讨论】:

    标签: dart


    【解决方案1】:

    Dart 2 支持函数类型语法:

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

    Effective Dart Design Guide 声明这种形式优于 typedef。

    【讨论】:

      【解决方案2】:

      你可以typedef这样的函数签名:

      typedef bool Filter(num x);
      
      List<num> filterNumbers(List<num> numbers, Filter filter) {
        return numbers.where(filter).toList();
      }
      

      如需更多类似的信息,请查看这篇文章:https://www.dartlang.org/articles/idiomatic-dart/

      【讨论】:

      • 我明白了,我可以在我的类中使用Filter 作为变量类型,非常好。虽然我确实认为能够在类中定义 typedef 会更干净,因为它不会向当前命名空间暴露任何东西(无论如何你几乎不会在类之外使用Filter,你传入的函数相同的签名)。谢谢!
      • 您可以使用库来控制您公开的内容。
      猜你喜欢
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 2013-10-12
      • 1970-01-01
      • 2020-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多