久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

PHP基礎之生成器4——比較生成器和迭代器對象

瀏覽:138日期:2022-09-15 09:50:00

生成器最大的優勢就是簡單,和實現Iterator的類相比有著更少的樣板代碼,并且代碼的可讀性也更強. 例如, 下面的函數和類是等價的:

<?php function getLinesFromFile($fileName) {if (!$fileHandle = fopen($fileName, ’r’)) { return;}while (false !== $line = fgets($fileHandle)) { yield $line;}fclose($fileHandle); } // versus... class LineIterator implements Iterator {protected $fileHandle;protected $line;protected $i;public function __construct($fileName) { if (!$this->fileHandle = fopen($fileName, ’r’)) {throw new RuntimeException(’Couldn’t open file '’ . $fileName . ’'’); }}public function rewind() { fseek($this->fileHandle, 0); $this->line = fgets($this->fileHandle); $this->i = 0;}public function valid() { return false !== $this->line;}public function current() { return $this->line;}public function key() { return $this->i;}public function next() { if (false !== $this->line) {$this->line = fgets($this->fileHandle);$this->i++; }}public function __destruct() { fclose($this->fileHandle);} }?>

這種靈活性也付出了代價:生成器是前向迭代器,不能在迭代啟動之后往回倒. 這意味著同一個迭代器不能反復多次迭代: 生成器需要需要重新構建調用,或者通過clone關鍵字克隆.

標簽: PHP
相關文章:
主站蜘蛛池模板: 涞水县| 隆昌县| 萨迦县| 洪泽县| 临猗县| 麟游县| 台中县| 阳新县| 府谷县| 汕尾市| 广东省| 健康| 平乐县| 桂东县| 铜山县| 郑州市| 吴旗县| 华亭县| 聊城市| 隆安县| 房山区| 冕宁县| 玛纳斯县| 井陉县| 武邑县| 廉江市| 宝丰县| 巴里| 海林市| 崇左市| 古田县| 姚安县| 三明市| 牡丹江市| 拉孜县| 黔东| 孟连| 平凉市| 安福县| 临沂市| 普陀区|