我以某种方式发现该call()方法适用于每个函数。使用这种方法,我可以将我的更改if (callback != null) callback()为callback?.call().
所以我试图找到 的实现和文档call(),但我找不到。它只是内置方法吗?这个方法的实现是什么?Function.apply()里面会叫吗?
lrn*_*lrn 11
所有 Dart函数(具有函数类型而不是类/接口类型的对象)都有一个call方法。
该call方法与函数本身具有相同的函数类型,并且在您调用它时的行为完全相同。你甚至可以说调用一个函数就是隐式调用它的call方法。而且,并非巧合,规范实际上确实说:如果您编写函数 invocation e1(e2, e3),则编译器检查是否e1有call方法,如果有,则将其转换为方法invocation e1.call(e2, e3)。
其他 Dart 对象也可能有一个call方法。它只是接口类型的一个普通方法,但是如果类C有一个像 的调用方法int call(int x) => ...,并且c有类型C,那么c(e2, e3)也会被转换为c.call(e2, e3). 它必须是一个call 方法,而不仅仅是一个call返回函数的getter。
| 归档时间: |
|
| 查看次数: |
2123 次 |
| 最近记录: |