2009-01-15 53 views
4

我剛剛寫完自己的collecion類,並且我真的希望使用它可以迭代每個或簡單的構造,或者只是使用集合[鍵]符號訪問元素。AS3中的過載[]運算符

我寫了一個getElementAt(index):MyOwnElement功能,但使用它,不如使用方brachets性感,甚至不讓我開始迭代..

有什麼辦法?

回答

9

你應該看看mx.utils.Proxy - 從子類集合類(或者至少東西是足夠接近),是(並將其設置爲動態)可能會給你訪問一些你想要的功能

例如,這裏是從nextValue()方法的文檔的摘錄:

「允許s通過索引號列舉代理 對象的屬性到 檢索屬性值。但是,您 無法枚舉 代理類本身的屬性。 此功能 支持實施對象for...infor each..in循環來 檢索所需的值。」

0

不能在AS3覆蓋運營商實現迭代器模式相當不錯的文章。
我想你可能會改變「getElementAt」到「在」 :) 或assgin getElementAt到一個臨時變量簡稱喜歡....

0

取決於您的收藏的內部結構。如果你的集合存儲爲一個數組,那麼你可以使用電學性能的研究,實現了方括號的效果:


/*** MyCollection class ***/ 
private var elementHolder : Array; 

public function get getElementAt() : Array{ 
    return elementHolder; 
} 
/*** Some other class******/ 
public function main() : void{ 
    trace("Element at 3: " + myCollection.getElementAt[3]); 
} 

如果您收藏不存儲在陣列也許你可以把它轉換成數組(如Java集合的指定者()方法)

例如,如果你的收藏是一個鏈表:


/*** MyCollection class ***/ 

public function get getElementAt() : Array{ 
    var temp : Array = new Array(); 
    while(node.next != null{ 
     temp.push(node); 
    } 
    return temp; 
} 
/*** Some other class******/ 
public function main() : void{ 
    trace("Element at 3: " + myCollection.getElementAt[3]); 
}