迭代器和迭代器的基类

Posted 青柠檬lily

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代器和迭代器的基类相关的知识,希望对你有一定的参考价值。

Iterator 迭代器

IteratorAggregate接口

//迭代器和迭代器的示例基类
class ObjectIterator implements Iterator {
    private $obj;
    private $count;
    private $currentIndex;
    function __construct($obj) {
        $this->obj = $obj;
        $this->count = count($this->obj->data);
    }
    function rewind() {//内部数据指针设置回数据开始处
        $this->currentIndex = 0;
    }
    function valid() {//判断数据指针的当前位置是否还存在更多数据
        return $this->currentIndex < $this->count;
    }
    function key() {//函数将返回数据指针的值
        return $this->currentIndex;
    }
    function current() {//返回保存在当前数据指针的值
        return $this->obj->data[$this->currentIndex];
    }
    function next() {//函数在数据中移动数据指针的位置
        $this->currentIndex++;
    }
}
class Object implements IteratorAggregate {
    public $data = array();
    function __construct($in) {
        $this->data = $in;
    }
    function getIterator() {
        return new ObjectIterator($this);
    }
}
$myObject = new object(array(2,4,6,8,10));
$myIterator = $myObject->getIterator();
for($myIterator->rewind();$myIterator->valid();$myIterator->next()) {
    $key = $myIterator->key();
    $value = $myIterator->current();
    echo $key."=>".$value."<br/>";
}

以上是关于迭代器和迭代器的基类的主要内容,如果未能解决你的问题,请参考以下文章

Python中迭代器和生成器的区别与联系

python -- 迭代器和装饰器

迭代器和生成器

装饰器和迭代器

迭代器和生成器

枚举器和迭代器