Vergleich von PHP-Generatoren und Iteratorobjekten

王林
Freigeben: 2023-09-16 17:42:02
nach vorne
991 Leute haben es durchsucht

Vergleich von PHP-Generatoren und Iteratorobjekten

Einführung

Wenn eine Generatorfunktion aufgerufen wird, wird intern ein neues Generatorklassenobjekt zurückgegeben. Es implementiert die Iterator-Schnittstelle. Die Iterator-Schnittstelle definiert die folgenden abstrakten Methoden:

  • Iterator::current – Gibt das aktuelle Element zurück.
  • Iterator::key – Gibt den Schlüssel des aktuellen Elements zurück.
  • Iterator::next – Geht vorwärts zu das nächste Element
  • Iterator: :rewind – Zurückspulen des Iterators zum ersten Element
  • Iterator::valid – Überprüfen Sie, ob die aktuelle Position gültig ist

Der Generator fungiert als Only-Forward-Iterator-Objekt Und stellt aufrufbare Methoden zur Manipulation des Generatorstatus bereit, einschließlich des Sendens von Werten an den Generator und der Rückgabe von Werten vom Generator.

Generatoren als Interakteure

Im folgenden Beispiel generiert die Generatorfunktion Zeilen in der Datei des Generatorobjekts, die mithilfe einer oreach-Schleife iteriert werden können. Es können auch Iteratormethoden wie current() und next() aufgerufen werden. Da der Generator jedoch ein Nur-Vorwärts-Iterator ist, löst der Aufruf der Methode rewind() eine Ausnahme aus

Example

<?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();
?>
Nach dem Login kopieren

Output

Nach der Iteration über die Dateizeilen wird ein schwerwiegender Fehler wie folgt angezeigt:

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
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonVergleich von PHP-Generatoren und Iteratorobjekten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage