我是新來的飛鏢,所以也許我失去了一些東西:獲取對同一個方法的多個引用=多個對象?
這工作:
在我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在鏢 –