PHP 7 中的生成器返回表示式


在之前的PHP版本中,生成器函式無法返回表示式,但從PHP 5.5開始,在現有版本中添加了生成器返回表示式。透過使用生成器返回表示式,可以輕鬆地在生成器中使用return語句,並且它還會返回最終表示式的值。

  • 使用生成器返回表示式,我們只能返回表示式的值,而不能返回引用。使用新的**Generator::getReturn()**方法,我們可以在生成器函式完成生成已定義的值後獲取該值。
  • 使用PHP 7生成器,我們可以從生成器返回表示式中返回最終值。我們可以使用**$generator->getReturn()**檢索返回表示式,因為PHP 7允許生成器從程式中的協程計數返回最終值,這些值可以由執行生成器的客戶端程式碼持有。

生成器返回表示式:示例 1

線上演示

<html>
<head>
<title> PHP 7 Feature : Generator Return Expressions </title>
</head>
<body>
<?php
   $generator = (function(){
      yield "five";
      yield "six";
      yield "seven";
      return "eight";
   })
   ();
   foreach ($generator as $val){
      echo $val, PHP_EOL;
   }
   echo $generator ->getReturn(), PHP_EOL;
?>
</body>
</html>

輸出

上述PHP程式的輸出將是

five six seven eight

上述PHP 7程式的解釋:

  • 我們可以在編輯器中編寫上述程式碼,並編寫如上例所示的HTML程式碼,HTML的body部分注入實際的PHP 7生成器返回表示式的程式碼。
  • 其次,宣告一個具有$generator引用的函式。
  • 在$generator引用中,我們定義了yield "five","six","seven"和"eight"。
  • 最後,我們迭代"$generator"函式直到結束(PHP_EOL),並輸出yield的值以及生成器返回表示式。

生成器返回表示式:示例 2

線上演示

<html>
<head>
<title> PHP 7 Feature: Generator Return Expressions Example </title>
</head>
<body>
<?php
   function gen(){
      yield 'A';
      yield 'B';
      yield 'C';
      return 'gen-return';
   }
   $generator = gen();
   var_dump($generator);
   foreach ($generator as $letter){
      echo $letter;
   }
   var_dump($generator->getReturn());
?>
</body>
</html>

輸出

上述PHP程式的輸出將是:

object(Generator)#1 (0) { }ABCstring(10) "gen-return"

更新於:2021年3月13日

312 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.