據我所知Array類已經在Enumerable模塊中混合。爲什麼在Array已經是Enumerable時使用Array#to_enum?
如果是這樣,爲什麼沒有[:example].next
?
爲什麼我需要使它[:example].to_enum.next
?
據我所知Array類已經在Enumerable模塊中混合。爲什麼在Array已經是Enumerable時使用Array#to_enum?
如果是這樣,爲什麼沒有[:example].next
?
爲什麼我需要使它[:example].to_enum.next
?
因爲Enumerable
module不同於Enumerator
class。
「Enumerable」表示該類獲得了一堆創建「枚舉器」的免費方法。與Java的Iterable
和Iterator
接口進行比較。
Enumberable,Enumerator,我忽略了那個!現在一切都很有意義。謝謝。 –
to_enum
與Enumerable
無關,它返回Enumerator
。 Array
沒有next
方法,因爲next
是Enumerator
方法,而不是Enumerable
方法。
謝謝,我不知道Enumerable和Enumerator之間的區別! –
@JanDvorak'to_enum'是'Object'的一種方法 – Stefan
@Stefan呃......哇。 http://ruby-doc.org/core-1.9.3/Object.html#method-i-to_enum –
因爲'next'方法是在'Enumerator'類而不是'Array'上定義的。數組在Enumerable中混合,首先使對話成爲'Enumerator'。 –
與[this]相同(http://stackoverflow.com/questions/2863044/what-is-the-advantage-of-creating-an-enumerable-object-using-to-enum-in-ruby)? –