预定义接口-迭代器Iterator
程序员文章站
2022-05-19 18:34:04
...
php /* 可在内部迭代自己的外部迭代器或类的接口。 Iterator extends Traversable { abstract public mixed current ( void ) abstract public scalar key ( void ) abstract public void next ( void ) abstract public void rewind ( void ) abstract public boolean valid ( void ) } */ class myIterator implements Iterator{ private $position = 0 ; private $array = array( "firstelement" , "secondelement" , "lastelement" , ); public function __construct () { $this -> position = 0 ; } function rewind () { var_dump ( __METHOD__ ); $this -> position = 0 ; } function current () { var_dump ( __METHOD__ ); return $this -> array [ $this -> position ]; } function key () { var_dump ( __METHOD__ ); return $this -> position ; } function next () { var_dump ( __METHOD__ ); ++ $this -> position ; } function valid () { var_dump ( __METHOD__ ); return isset( $this -> array [ $this -> position ]); } } $it = new myIterator ; foreach( $it as $key => $value ) { print_r( $key.'/'.$value ); echo "
" ; } /* foreach循环第一次执行前,先调用rewind,返回到迭代器的第一个元素,开始位置也可控制 第二步执行valid检查当前位置是否有效,有效继续往下执行,无效则循环停止 第三步执行current返回当前元素的值 第四步执行key 返回当前元素的键 第五步:第一次循环结束后执行next向前移动到下一个元素开始下一轮的循环(紧接着跳过rewind,进行valid检测当前位置) 往下next,valid,current,key循环依次执行,直到valid到无效的位置 */
内容是自己总结的,有不对的地方,希望能指出!
更多内容后续补充...
推荐阅读
-
Mina Io监听器接口定义及抽象实现
-
设计模式之Iterator(迭代器)
-
Collection中常用的方法 Iterator (迭代器) contains remove
-
C#迭代器模式(Iterator Pattern)实例教程
-
C#迭代器模式(Iterator Pattern)实例教程
-
PHP设计模式之迭代器(Iterator)模式入门与应用详解
-
Python中Iterator迭代器的使用杂谈
-
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
-
python里for遍历执行流程及自定义可迭代器对象和迭代器
-
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】