Heim > Backend-Entwicklung > PHP-Tutorial > PHP-Generatorobjekt

PHP-Generatorobjekt

伊谢尔伦
Freigeben: 2016-11-23 09:06:44
Original
1632 Leute haben es durchsucht

Wenn eine Generatorfunktion zum ersten Mal aufgerufen wird, gibt sie ein Objekt der internen Generator-Klasse zurück. Dieses Objekt implementiert die Iterator-Schnittstelle fast auf die gleiche Weise wie das Front-Iterator-Objekt.

Die meisten Methoden in der Generator-Klasse haben die gleiche Semantik wie die Methoden in der Iterator-Schnittstelle, aber das Generatorobjekt verfügt über eine zusätzliche Methode: send().

AchtungGenerator-Objekte können keine neuen übergeben Instanziierung

Beispiel #1 Die Generator-Klasse

<?php
    class Generator implements Iterator {
        public function rewind(); //Rewinds the iterator. 如果迭代已经开始,会抛出一个异常。
        public function valid(); // 如果迭代关闭返回false,否则返回true.
        public function current(); // Returns the yielded value.
        public function key(); // Returns the yielded key.
        public function next(); // Resumes execution of the generator.
        public function send($value); // 发送给定值到生成器,作为yield表达式的结果并继续执行生成器.
    }
?>
Nach dem Login kopieren

Generator::send()

Beim Iterieren ermöglicht Generator::send() das Einfügen von Werten into In der Generator-Methode werden die injizierten Werte von der yield-Anweisung zurückgegeben und dann in beliebigen Variablen mithilfe der Generator-Methode verwendet.

Beispiel Nr. 2: Verwendung von Generator::send() zum Injizieren von Werten

<?php
    function printer() {
        while (true) {
            $string = yield;
            echo $string;
        }
    }
    $printer = printer();
    $printer->send(&#39;Hello world!&#39;);
?>
Nach dem Login kopieren

Die obige Routine gibt Folgendes aus:

Hello world!
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
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