它计划在Dart语言中添加功能以声明闭包(不使用typedef)作为类型化函数



Dart语言中的闭包经常使用,因为它们非常强大。

我想问关于闭包可用性的问题。

假设以下源代码:

class SomeWork<T> {
  Function _test;
  SomeWork(bool test(T a, T b)) {
    _test = test;
  }
}

如果我将此代码重写为此代码片段,则该函数(作为参数(将是非类型化的(或者更确切地说是具有不同的类型(。

class SomeWork<T> {
  final Function test;
  SomeWork(this.test) {
  }
}

问题:

  • 计划在 Dart 语言中添加功能以声明闭包(不使用 typedef,"动态"(作为类型化函数?

像这个代码示例:

class SomeWork<T> {
  final Function<bool, T, T> test;
  SomeWork(this.test) {
  }
}

附言

为了澄清起见,我想(过一段时间(在 C# 语言中添加此示例,因为据我所知,Dart 语言中的给定示例并不完全正确。

class SomeWork<T> {
  sealed Func<T, T, bool> m_test;
  SomeWork(Func<T, T, bool> test)
  {             
    m_test = test;        
  }
}

即我询问了使用类似于 C# Func<>Action<> 的类型的可能性。

不,我知道这里没有计划。在 Dart 开发的早期,关于类型注释语法的这个不幸的角落有很多讨论,但语言设计者认为这是一个值得的权衡,以便拥有来自 C、C++、Java 和 C# 的程序员看起来熟悉的类型注释。

最新更新