有人可以提供生成器,枚舉器,迭代器術語的定義。看起來不同的語言使用這些任意的,我想知道確切的區別。生成器,枚舉器,迭代器定義
0
A
回答
0
Wikipedia提供非常好的通用定義:
總之,迭代器是可重複讀取使用循環的類;一個生成器是一個函數,它像一個迭代器一樣通過返回它的值;而枚舉器是一種數據類型,其中包含可用於變量定義中的可能值列表,以強制它僅包含其中一個值。
據我所知,這些術語的使用是語言之間相當一致的,儘管有不同的語法(顯然)。你看到了什麼讓你感到困惑?
1
枚舉器是貼標籤的值的一種方式。如果你有一個整數的容器,你可以爲可能的值定義一個枚舉。記住命名值然後是數字比較容易,例如想象如果你認識的每個人都沒有名字,而是被賦予一個唯一的數字。這將是很難記住。
迭代器是一個對象,允許你遍歷的容器。你一步一步遍歷它。一些容器很容易通過(像一個連續的數組),但其他的不是(比如鏈接列表,其中每個元素可以隨機分散在整個內存中,或者是一個二叉樹,其中可能有不同的命令來逐步遍歷數據)。迭代器允許您遍歷容器而不用擔心這些細節。
至於發電機,我不熟悉他們,所以我會離開你這個引自維基百科:
在計算機科學中,發電機是一種可用於控制的迭代行爲的特別程序一個循環。生成器與返回數組的函數非常相似,因爲生成器具有參數,可以調用並生成一系列值。但是,不是構建一個包含所有值的數組並立即返回它們,而是一次生成一個值,這需要較少的內存,並允許調用者立即開始處理前幾個值。簡而言之,生成器看起來像一個函數,但其行爲像迭代器。
相關問題
- 1. Java枚舉與迭代器
- 2. 轉換枚舉迭代器
- 3. 不能理解遊戲中的迭代器,枚舉器,枚舉器2.0
- 4. 迭代器,ListIterartor和枚舉的實例
- 5. 將枚舉器/對象迭代到流
- 6. Java枚舉列表迭代器問題
- 7. AlertDialog生成器setSingleChoiceItems從枚舉
- 8. 異步生成器不是迭代器?
- 9. 調試生成器和迭代器
- 10. Scalaz迭代器,爲BufferedReader創建枚舉器
- 11. 試圖理解Scala枚舉器/迭代器
- 12. 返回枚舉器不使用現有的迭代器
- 13. 用一個枚舉器提供兩個迭代器
- 14. Json.net自定義枚舉轉換器
- 15. 重新定義枚舉器 - Obj-C
- 16. 優化迭代器定義
- 17. 自定義迭代器
- 18. 自定義迭代器
- 19. 定義BST的迭代器
- 20. 這個編譯器生成的枚舉器是什麼意思?
- 21. 具有派生類的自定義容器的迭代器
- 22. 定義迭代器/迭代器構造函數時出錯?
- 23. 生成枚舉
- 24. 我應該定義自定義的枚舉器還是使用內置的枚舉器?
- 25. 迭代器的迭代器
- 26. 我該如何製作一個通過兩個其他枚舉器進行延遲迭代的ruby枚舉器?
- 27. Promise.all無效迭代拋出生成器
- 28. Python生成器返回停止迭代?
- 29. 如何使用迭代器/枚舉接口在Java中
- 30. 將枚舉<T>作爲迭代器使用<T>
http://stackoverflow.com/a/1630301/1949288 – user206334