首頁 > 後端開發 > php教程 > PHP生成器與迭代器物件的比較

PHP生成器與迭代器物件的比較

王林
發布: 2023-09-16 17:42:02
轉載
993 人瀏覽過

PHP生成器與迭代器物件的比較

簡介

當呼叫生成器函數時,內部會傳回一個新的 Generator 類別物件。它實作了迭代器介面。迭代器介面定義了以下抽象方法

  • Iterator::current - 傳回目前元素
  • Iterator: :key — 傳回目前元素的鍵
  • Iterator::next #— 向前移動到下一個元素
  • 迭代器: :rewind — 將迭代器倒回到第一個元素
  • Iterator::valid — 檢查目前位置是否有效
##產生器充當

僅前向迭代器對象,並提供可呼叫的方法來操縱生成器的狀態,包括向生成器發送值和從生成器返回值。

生成器作為交互器

在下面的範例中,生成器函數在生成器物件的檔案中產生行,可以使用 oreach 循環遍歷這些行。也可以呼叫諸如

current() 和 next() 之類的迭代器方法。但是,由於生成器是只向前迭代器,因此呼叫rewind() 方法會拋出異常

範例

<?php
function filegenerator($name) {
   $fileHandle = fopen($name, &#39;r&#39;);
   while ($line = fgets($fileHandle)) {
      yield $line;
   }
   fclose($fileHandle);
}
$name="test.txt";
$file=filegenerator($name);
foreach ($file as $line)
echo $line;
$file->rewind();
echo $file->current();
$file->next();
echo $file->current();
?>
登入後複製

輸出

遍歷文件行後,顯示如下致命錯誤

PHP User Defined Functions
PHP Function Arguments
PHP Variable Functions
PHP Internal (Built-in) Functions
PHP Anonymous functions
PHP Arrow Functions
PHP Fatal error: Uncaught Exception: Cannot rewind a generator that was already run
登入後複製

以上是PHP生成器與迭代器物件的比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板