我剛剛寫完自己的collecion類,並且我真的希望使用它可以迭代每個或簡單的構造,或者只是使用集合[鍵]符號訪問元素。AS3中的過載[]運算符
我寫了一個getElementAt(index):MyOwnElement
功能,但使用它,不如使用方brachets性感,甚至不讓我開始迭代..
有什麼辦法?
我剛剛寫完自己的collecion類,並且我真的希望使用它可以迭代每個或簡單的構造,或者只是使用集合[鍵]符號訪問元素。AS3中的過載[]運算符
我寫了一個getElementAt(index):MyOwnElement
功能,但使用它,不如使用方brachets性感,甚至不讓我開始迭代..
有什麼辦法?
你應該看看mx.utils.Proxy
- 從子類集合類(或者至少東西是足夠接近),是(並將其設置爲動態)可能會給你訪問一些你想要的功能
例如,這裏是從nextValue()
方法的文檔的摘錄:
「允許s通過索引號列舉代理 對象的屬性到 檢索屬性值。但是,您 無法枚舉 代理類本身的屬性。 此功能 支持實施對象
for...in
和for each..in
循環來 檢索所需的值。」
有在AS3 here
不能在AS3覆蓋運營商實現迭代器模式相當不錯的文章。
我想你可能會改變「getElementAt」到「在」 :) 或assgin getElementAt到一個臨時變量簡稱喜歡....
取決於您的收藏的內部結構。如果你的集合存儲爲一個數組,那麼你可以使用電學性能的研究,實現了方括號的效果:
/*** 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]);
}