as3:如何创建自定义迭代器

时间:2011-09-18 19:19:23

标签: actionscript-3

我正在尝试创建自定义迭代器元素。课程本身如下。

    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;
    }

}

问题是。如果我在某些元素上有这样的迭代器,是否可以在结构中使用....我需要更改才能使用它? (当然,除了使用数组而不是迭代器之外)

1 个答案:

答案 0 :(得分:1)

如果你想使用for ... in,你需要继承Proxy并覆盖适当的方法:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/Proxy.html