首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是眼泪/眼泪/眼泪?

什么是眼泪/眼泪/眼泪?
EN

Stack Overflow用户
提问于 2021-09-05 17:34:41
回答 2查看 2K关注 0票数 7

我正在阅读关于Isolate.spawn的文档,其中提到了“实例方法删除”。我不知道那是什么,我也找不到其他解释的地方。眼泪是什么?

该函数必须是一个顶层函数或一个静态方法,可以用一个参数调用,即一个编译时常数函数值,该值至少接受一个位置参数,最多包含一个必需的位置参数。该函数可以接受任意数量的可选参数,只要只使用一个参数即可调用。函数不能是函数表达式或实例方法的值。

它在这个github问题上也使用了很多:支护方法/功能过载

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-05 20:09:47

Dart语言规范解释道:

17.21性质提取 属性提取允许以属性而不是函数的形式访问成员。属性提取可以是:

  1. 实例方法闭包,它将方法转换为函数对象(17.21.3)。或
  2. getter调用,它返回调用getter方法的结果(17.21.1)。

函数对象是通过封闭从成员派生出来的,俗称为撕开。

有效导程还提到了撕掉,并用较少的术语来描述它们:

如果引用对象上的方法但省略了括号,Dart将给出一个“删除”-a闭包,该闭包接受与方法相同的参数,并在调用它时调用它。

换句话说,“撕掉”是用来描述从函数或方法名称生成函数对象的行为。它们相当于其他语言中的函数指针或指向成员的函数。当您想要直接使用函数或方法作为回调时,您将使用删除。例如:

代码语言:javascript
运行
复制
class Foo {
  int value;

  Foo(this.value);

  int add(int other) => value + other;
  int multiply(int other) => value * other;
}

void main() {
  var foo = Foo(5);

  // `foo.add` is an instance method tear-off.  It is equivalent to:
  // `(int other) => foo.add(other)`
  var someOperation = foo.add;
  print(someOperation(8)); // Prints: 13

  someOperation = foo.multiply;
  print(someOperation(8)); // Prints: 104
}

(这个最终也应该在Dart语言之旅上得到解释.)

票数 10
EN

Stack Overflow用户

发布于 2022-01-07 13:50:19

我想Google开发人员已经意识到这是一个混乱的领域,所以他们就在上周制作了一个简洁的视频:破译颤振

例如,他们建议,而不是:

代码语言:javascript
运行
复制
ElevatedButton(
  onPressed: () { myHandler(); }
)

使用:

代码语言:javascript
运行
复制
ElevatedButton(
  onPressed: myHandler <-- myHandler is a tear-off
)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69065771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档