-1

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,“on the fly”)作为类型化函数?

就像这个代码示例:

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<>.

4

1 回答 1

1

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

于 2013-07-16T15:18:33.900 回答