首頁  >  文章  >  後端開發  >  PHP生成器與迭代器物件的比較

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

王林
王林轉載
2023-09-16 17:41:02954瀏覽

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刪除