Насколько я понимаю, класс Array уже смешивается в модуле Enumerable.Зачем использовать Array # to_enum, если Array уже перечислит?
Если это так, почему нет [:example].next
?
Зачем мне это нужно [:example].to_enum.next
?
Насколько я понимаю, класс Array уже смешивается в модуле Enumerable.Зачем использовать Array # to_enum, если Array уже перечислит?
Если это так, почему нет [:example].next
?
Зачем мне это нужно [:example].to_enum.next
?
Потому что Enumerable
module отличается от Enumerator
class.
Быть «Перечислимым» означает, что класс получает кучу халявных методов, которые создают «Перечислители». Сравнение с интерфейсами Java Iterable
и Iterator
.
Enumbererator, Enumerator, я пропустил это! теперь все имеет смысл. Спасибо. –
to_enum
не имеет отношения к Enumerable
, он возвращает Enumerator
. Array
не имеет метода next
, потому что next
- метод Enumerator
, а не метод Enumerable
.
Спасибо, я не знал разницы между Enumerable и Enumerator! –
@JanDvorak 'to_enum' - это метод' Object' – Stefan
@Stefan uhh ... wow. 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)? –