摘要:從手冊中查到的解釋是當一個實現了接口的對象,被遍歷時,會自動調用這些方法。調用的循序是下面來看一下簡單的代碼以上會輸出
從手冊中查到的解釋是:
Iterator extends Traversable { /* Methods */ 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 ) }
當一個實現了Iterator接口的對象,被foreach遍歷時,會自動調用這些方法。調用的循序是:
rewind() -> valid() -> current() -> key() -> next()
下面來看一下簡單的代碼:
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) { var_dump($key, $value); echo "---------------------------"." "; }
以上會輸出:
/Users/thanatos/Web/study/blean.php:15:string "myIterator::rewind" (length=18) /Users/thanatos/Web/study/blean.php:35:string "myIterator::valid" (length=17) /Users/thanatos/Web/study/blean.php:20:string "myIterator::current" (length=19) /Users/thanatos/Web/study/blean.php:25:string "myIterator::key" (length=15) /Users/thanatos/Web/study/blean.php:43:int 0 /Users/thanatos/Web/study/blean.php:43:string "firstelement" (length=12) --------------------------- /Users/thanatos/Web/study/blean.php:30:string "myIterator::next" (length=16) /Users/thanatos/Web/study/blean.php:35:string "myIterator::valid" (length=17) /Users/thanatos/Web/study/blean.php:20:string "myIterator::current" (length=19) /Users/thanatos/Web/study/blean.php:25:string "myIterator::key" (length=15) /Users/thanatos/Web/study/blean.php:43:int 1 /Users/thanatos/Web/study/blean.php:43:string "secondelement" (length=13) --------------------------- /Users/thanatos/Web/study/blean.php:30:string "myIterator::next" (length=16) /Users/thanatos/Web/study/blean.php:35:string "myIterator::valid" (length=17) /Users/thanatos/Web/study/blean.php:20:string "myIterator::current" (length=19) /Users/thanatos/Web/study/blean.php:25:string "myIterator::key" (length=15) /Users/thanatos/Web/study/blean.php:43:int 2 /Users/thanatos/Web/study/blean.php:43:string "lastelement" (length=11) --------------------------- /Users/thanatos/Web/study/blean.php:30:string "myIterator::next" (length=16) /Users/thanatos/Web/study/blean.php:35:string "myIterator::valid" (length=17)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/23266.html
摘要:實現原理創建一個指針對象,指向當前數據結構的起始位置。也就是說,遍歷器對象本質上,就是一個指針對象。具體來說,就是返回一個包含和兩個屬性的對象。接口部署在對象的屬性上可以調用這個屬性,就得到遍歷器對象。 Iterator實現原理 創建一個指針對象,指向當前數據結構的起始位置。也就是說,遍歷器對象本質上,就是一個指針對象。 第一次調用指針對象的next方法,可以將指針指向數據結構的第一...
摘要:體現的就是適配器模式。數組對象集合世界中的機制機制集合世界中比較常見的錯誤檢測機制,防止在對集合進行遍歷過程當中,出現意料之外的修改,會通過異常暴力的反應出來。而在增強循環中,集合遍歷是通過進行的。 前言 學習情況記錄 時間:week 2 SMART子目標 :Java 容器 記錄在學習Java容器 知識點中,關于List的重點知識點。 知識點概覽: 容器中的設計模式 從Array...
摘要:概念迭代器模式,又叫做游標模式。另外,當需要對聚集有多種方式遍歷時,可以考慮去使用迭代器模式。迭代器模式為遍歷不同的聚集結構提供如開始下一個是否結束當前哪一項等統一的接口。 概念 迭代器模式(Iterator),又叫做游標(Cursor)模式。提供一種方法順序訪問一個聚合對象中的各種元素,而又不暴露該對象的內部表示。 當你需要訪問一個聚合對象,而且不管這些對象是什么都需要遍歷的時候,就...
摘要:界面包含四個必須部署的方法下面就是一個部署界面的實例使用方法如下運行結果如下可以看到,雖然是一個,但是完全可以像那樣操作。示例如下類也支持類方法和方法類和類類和類,只支持遍歷一維數組。 這幾天,我在學習PHP語言中的SPL。 這個東西應該屬于PHP中的高級內容,看上去很復雜,但是非常有用,所以我做了長篇筆記。不然記不住,以后要用的時候,還是要從頭學起。 由于這是供自己參考的筆記,不是教...
摘要:展開的屬性后發現,繼承于一個對象,而這個對象又繼承于對象。這證實了我們對的猜想。是比較新的模型,相比更加完善,不光有元素,還有節點和。關于,和的關系,就是長得像,有個別相似的功能,但是是完全不一樣的東西。 Array,NodeList, HTMLCollection這三個概念和它們之間的關系有很多做了幾年前端的同學都搞不清楚,經常遇到但是又感覺很陌生,剪不斷理還亂的感覺。今天咱們就來理...
閱讀 2953·2021-11-23 09:51
閱讀 1006·2021-09-26 09:55
閱讀 3935·2021-09-22 14:58
閱讀 1468·2021-09-08 09:35
閱讀 1078·2021-08-26 14:16
閱讀 882·2019-08-23 18:17
閱讀 2054·2019-08-23 16:45
閱讀 700·2019-08-23 15:55