我是新来的飞镖,所以也许我失去了一些东西:获取对同一个方法的多个引用=多个对象?
这工作:
在我main()
,我有这样的:
var a = _someFunction;
var b = _someFunction;
print("${a == b}"); // true. correct!
凡_someFunction
是另一个顶级功能。
这不起作用:(至少不是怎么我期待它)
鉴于该类...
class Dummy {
void start() {
var a = _onEvent;
var b = _onEvent;
print(a == b); // false. ???????
}
void _onEvent() {
}
}
从main()
实例化,并调用其start()
方法结果在false
。当我的代码获得对_onEvent
的引用时,显然会创建并返回一些函数或闭包对象的新实例。
这是故意的行为吗?
我期望获取对同一实例的同一方法的多次引用每次都会返回相同的对象。也许这是出于某种原因。如果是这样;什么原因?或者这是VM的缺陷/监督/限制?
感谢您的任何见解!
能否请您分享提示您寻找到这种行为的用例?鉴于你正在尝试做什么,可能有一些体面的解决方法可供你使用。 –
我正在添加方法引用作为事件处理程序,并尝试再次删除它们(从List中,由于每次实例不同而失败)。我阅读了一些变通方法,并最终选择在添加事件处理程序时将方法引用存储在“订阅”对象中,这很像Dart自己的“StreamSubscription”作品,我想。但是,我不喜欢这种行为...... – Torious
感谢您的背景。以下是制作自己的流的示例,它可以帮助您使用内置类对事件,订阅等进行建模:http://stackoverflow.com/questions/14536437/how-do-you-create-a-stream在镖 –