91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在php和C#中實現yield迭代器

發布時間:2021-05-21 16:00:24 來源:億速云 閱讀:142 作者:Leah 欄目:開發技術

這篇文章給大家介紹如何在php和C#中實現yield迭代器,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

yield關鍵字是用來方便實現迭代器的,免去了手工寫迭代器的繁瑣。迭代器常被用來實現協程,所以大部分的協程中都有yield關鍵字,可以參看unity3D的協程。

C#版本:

函數的返回類型必須為 IEnumerable、IEnumerable<T>、IEnumerator 或 IEnumerator<T>。

IEnumerable表示一個類可以迭代,也就是可以用foreach遍歷,IEnumerator是真正的迭代器實現,IEnumerable和IEnumerator一個是使用迭代器的接口,一個是實現迭代器的接口。

C#是怎么用yield實現迭代器的呢?其實是編譯器根據yield關鍵字生成了內部類,反編譯一下就可以看到。

using System.Collections;
class Program
{
   //返回IEnumerable接口,其實返回了編譯器生成的內部類
  public static IEnumerable fib(int n)
  {
    int cur = 1;
    int prev = 0;
    for (int i = 0; i < n; i++)
    {
      yield return cur;
      int temp = cur;
      cur = prev + cur;
      prev = temp;
    }
  }
  static void Main()
  {
    // Display powers of 2 up to the exponent 8:
    foreach (int i in fib(9))
    {
      Console.Write("{0} ", i);
    }
  }
}
// prints: 1 1 2 3 5 8 13 21 34

php版本:

函數返回類Generator,而類Generator實現了迭代器接口Iterator。

<?php
//返回Iterator接口,php解釋器幫我們返回了Generator類
function fib($n)
{
  $cur = 1;
  $prev = 0;
  for ($i = 0; $i < $n; $i++) {
    yield $cur;
    $temp = $cur;
    $cur = $prev + $cur;
    $prev = $temp;
  }
}
$fibs = fib(9);
foreach ($fibs as $fib) {
  echo " " . $fib;
}
// prints: 1 1 2 3 5 8 13 21 34

php有什么用

php是一個嵌套的縮寫名稱,是英文超級文本預處理語言,它的語法混合了C、Java、Perl以及php自創新的語法,主要用來做網站開發,許多小型網站都用php開發,因為php是開源的,從而使得php經久不衰。

關于如何在php和C#中實現yield迭代器就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

常熟市| 思茅市| 巴彦淖尔市| 东兰县| 峨眉山市| 册亨县| 娄底市| 邹平县| 青阳县| 遵化市| 略阳县| 都江堰市| 诸城市| 交城县| 雷州市| 如东县| 通城县| 漠河县| 平利县| 广宗县| 寻乌县| 罗江县| 乌鲁木齐县| 德化县| 柘城县| 柳州市| 阳山县| 县级市| 和田县| 霸州市| 清水县| 澄城县| 荣昌县| 霞浦县| 凤城市| 灵武市| 壤塘县| 昌邑市| 故城县| 铜川市| 双城市|