PHP基礎(chǔ)之生成器3——生成器對象
當(dāng)一個生成器函數(shù)被第一次調(diào)用,會返回一個內(nèi)部Generator類的對象. 這個對象以和前臺迭代器對象幾乎同樣的方式實現(xiàn)了Iterator?接口。
Generator?類中的大部分方法和Iterator?接口中的方法有著同樣的語義, 但是生成器對象還有一個額外的方法:?send().
CautionGenerator?對象不能通過new實例化
Example #1 The?Generator?class
<?php class Generator implements Iterator {public function rewind(); //Rewinds the iterator. 如果迭代已經(jīng)開始,會拋出一個異常。public function valid(); // 如果迭代關(guān)閉返回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); // 發(fā)送給定值到生成器,作為yield表達(dá)式的結(jié)果并繼續(xù)執(zhí)行生成器. }?>Generator::send()
當(dāng)進(jìn)行迭代的時候Generator::send()?允許值注入到生成器方法中. 注入的值會從yield語句中返回,然后在任何使用生成器方法的變量中使用.
Example #2 Using?Generator::send()?to inject values
<?php function printer() {while (true) { $string = yield; echo $string;} } $printer = printer(); $printer->send(’Hello world!’);?>
以上例程會輸出:
Hello world!
相關(guān)文章:
1. IntelliJ IDEA設(shè)置默認(rèn)瀏覽器的方法2. IntelliJ IDEA設(shè)置背景圖片的方法步驟3. Spring security 自定義過濾器實現(xiàn)Json參數(shù)傳遞并兼容表單參數(shù)(實例代碼)4. docker /var/lib/docker/aufs/mnt 目錄清理方法5. Python TestSuite生成測試報告過程解析6. Python 的 __str__ 和 __repr__ 方法對比7. Python OpenCV去除字母后面的雜線操作8. JAMon(Java Application Monitor)備忘記9. Python Scrapy多頁數(shù)據(jù)爬取實現(xiàn)過程解析10. 增大python字體的方法步驟
