雖然遞歸掃描通常用於掃描嵌套的對象/數據。如果某些對象相互引用,它可以進行無限循環。那麼掃描所有項目的最有效方法是什麼,不會造成計算機崩潰,也不會跳過指定的參數?AS3遞歸對象掃描無重複?
這裏是一個遞歸掃描儀的一個例子...
/**
* Triggers the scan function for each object given
**/
function recursiveScanner(object:* , scanFunction:Function):void {
if(typeof(object) == 'object') {
for(var key:String in object) {
recursiveScanner(object[key], scanFunction);
}
} else {
scanFunction.call(this, object);
}
}
在
//...
obj1.next = obj2;
//...
obj2.next = obj3;
//...
obj3.next = obj1;
//...
recursiveScanner(obj1, scanFuction);
的對象傳遞時,以下將觸發掃描對彼此在發生。然而一個巨大的問題永恆的循環。那麼有沒有辦法解決這個問題?
我確實相信C/C++:每次scanFunction調用,都會被添加到由掃描的「內存地址」組成的列表中,從而防止重複。這在AS3中甚至可能嗎?有更加優雅的方式嗎?
Ahh ...對象ID將在字典中用作屬性... Thx爲解決方案=) – PicoCreator 2011-06-14 12:24:46