我正在阅读关于Isolate.spawn的文档,其中提到了“实例方法删除”。我不知道那是什么,我也找不到其他解释的地方。眼泪是什么?
该函数必须是一个顶层函数或一个静态方法,可以用一个参数调用,即一个编译时常数函数值,该值至少接受一个位置参数,最多包含一个必需的位置参数。该函数可以接受任意数量的可选参数,只要只使用一个参数即可调用。函数不能是函数表达式或实例方法的值。。
它在这个github问题上也使用了很多:支护方法/功能过载。
发布于 2021-09-05 20:09:47
Dart语言规范解释道:
17.21性质提取 属性提取允许以属性而不是函数的形式访问成员。属性提取可以是:
函数对象是通过封闭从成员派生出来的,俗称为撕开。。
有效导程还提到了撕掉,并用较少的术语来描述它们:
如果引用对象上的方法但省略了括号,Dart将给出一个“删除”-a闭包,该闭包接受与方法相同的参数,并在调用它时调用它。
换句话说,“撕掉”是用来描述从函数或方法名称生成函数对象的行为。它们相当于其他语言中的函数指针或指向成员的函数。当您想要直接使用函数或方法作为回调时,您将使用删除。例如:
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语言之旅上得到解释.)
发布于 2022-01-07 13:50:19
我想Google开发人员已经意识到这是一个混乱的领域,所以他们就在上周制作了一个简洁的视频:破译颤振。
例如,他们建议,而不是:
ElevatedButton(
onPressed: () { myHandler(); }
)使用:
ElevatedButton(
onPressed: myHandler <-- myHandler is a tear-off
)https://stackoverflow.com/questions/69065771
复制相似问题