zoukankan      html  css  js  c++  java
  • 预定义接口-迭代器Iterator

    <?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  "<br />" ;
    }
    
    /*
    foreach循环第一次执行前,先调用rewind,返回到迭代器的第一个元素,开始位置也可控制
    第二步执行valid检查当前位置是否有效,有效继续往下执行,无效则循环停止
    第三步执行current返回当前元素的值
    第四步执行key 返回当前元素的键
    第五步:第一次循环结束后执行next向前移动到下一个元素开始下一轮的循环(紧接着跳过rewind,进行valid检测当前位置)
    往下next,valid,current,key循环依次执行,直到valid到无效的位置
    */

    最下面的注释是自己总结的,有不对的地方,希望能指出!

    更多内容后续补充...

  • 相关阅读:
    分布式缓存memcached介绍,win7环境安装,常用命令set,get,delete,stats, java访问
    【转】移除HTML5 input在type="number"时的上下小箭头
    ES6特性的两点分析
    hexo_config.yml配置内容
    JS性能分析(测试代码运行时间)
    github修改仓库项目的语言类型
    JavaScript回文数
    JS设计模式
    webpac入门
    居中问题
  • 原文地址:https://www.cnblogs.com/dytl/p/3727582.html
Copyright © 2011-2022 走看看