2013-01-04 32 views

回答

0

Wikipedia提供非常好的通用定義:

總之,迭代器是可重複讀取使用循環的類;一個生成器是一個函數,它像一個迭代器一樣通過返回它的值;而枚舉器是一種數據類型,其中包含可用於變量定義中的可能值列表,以強制它僅包含其中一個值。

據我所知,這些術語的使用是語言之間相當一致的,儘管有不同的語法(顯然)。你看到了什麼讓你感到困惑?

+0

http://stackoverflow.com/a/1630301/1949288 – user206334

1

枚舉器是貼標籤的值的一種方式。如果你有一個整數的容器,你可以爲可能的值定義一個枚舉。記住命名值然後是數字比較容易,例如想象如果你認識的每個人都沒有名字,而是被賦予一個唯一的數字。這將是很難記住。

迭代器是一個對象,允許你遍歷的容器。你一步一步遍歷它。一些容器很容易通過(像一個連續的數組),但其他的不是(比如鏈接列表,其中每個元素可以隨機分散在整個內存中,或者是一個二叉樹,其中可能有不同的命令來逐步遍歷數據)。迭代器允許您遍歷容器而不用擔心這些細節。

至於發電機,我不熟悉他們,所以我會離開你這個引自維基百科:

在計算機科學中,發電機是一種可用於控制的迭代行爲的特別程序一個循環。生成器與返回數組的函數非常相似,因爲生成器具有參數,可以調用並生成一系列值。但是,不是構建一個包含所有值的數組並立即返回它們,而是一次生成一個值,這需要較少的內存,並允許調用者立即開始處理前幾個值。簡而言之,生成器看起來像一個函數,但其​​行爲像迭代器。