我正在尝试创建自定义迭代器元素。课程本身如下。
public class ArrayBasedIterator implements IteratorInterface
{
// Holds Array of elements which are iterated
private var _container:Array;
// Holds current index
private var _index:uint = 0;
public function ArrayBasedIterator(data:Array)
{
if (!data)
throw new Error("Cannot create iterator for null data");
_container = data;
}
/**
* Returns next node if it exists, null otherwise*/
public function next():TreeNode
{
if (_index > _container.length )
{
return null;
}
else {
_index += 1;
}
//TODO: implement function
return _container[_index];
}
/**
* Returns prev node if it exists, null otherwise*/
public function prev():TreeNode
{
if (_index < 0)
{
return null
}
else {
_index -= 1;
}
//TODO: implement function
return _container[_index];
}
public function len():int
{
return _container.length;
}
}
问题是。如果我在某些元素上有这样的迭代器,是否可以在结构中使用....我需要更改才能使用它? (当然,除了使用数组而不是迭代器之外)
答案 0 :(得分:1)
如果你想使用for ... in
,你需要继承Proxy
并覆盖适当的方法:
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/Proxy.html