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

PHP-Generatorobjekt

伊谢尔伦
伊谢尔伦Original
2016-11-23 09:06:441644Durchsuche

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表达式的结果并继续执行生成器.
    }
?>

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;);
?>

Die obige Routine gibt Folgendes aus:

Hello world!
Stellungnahme:
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
Vorheriger Artikel:Verwendung von PHP SPLNächster Artikel:Verwendung von PHP SPL