2014-10-07 3 views
1

Может кто-нибудь объяснить в самых простых, laymans условиях, что такое Ruby Enumerable? Я очень новичок в кодировании и просто начинаю работать с массивами и хэшами. Я читал слово «Перечислимые» везде, но я не понимаю, что это такое.Ruby Enumerables - что это такое?

+6

В принципе, это объект, который знает, как '.each'. См. Http://ruby-doc.org/core-2.1.3/Enumerable.html для получения подробной информации о перечислимом миксине. – cHao

+1

Awesome: «это объект, который знает, как.». Это именно то, что мне нужно было прочитать. Большое вам спасибо за простое разъяснение! – Jane

+1

Однажды, давным-давно, очень мудрый Rubyest из земли Восходящего Солнца заметил, что многие методы, которые он использовал для массивов, были очень похожи на те, которые он использовал для хэшей, диапазонов и других коллекций. Он видел, что он мог написать их так, что единственное различие заключалось в том, как был реализован метод «каждый», поэтому он поместил их всех в модуль, который он назвал «可 算 の» («Перечислимый»), а затем во всех классах для разных типы коллекций ('Array',' Hash', 'Range',' Set' и т. д.), он добавил 'include Enumerable' и метод' each'. После этого он подумал: «生活 は 快 適 で す» («жизнь хороша»). –

ответ

0

the docs От:

перечислимого Mixin предоставляет классы коллекций с несколькими обхода и поиска методов, а также с возможностью сортировки. Класс должен предоставлять каждый метод, который дает последовательные элементы коллекции .

1

Может кто-то объяснить самое основное, дилетанты условия, что рубин перечислимых является?

Это модуль, который определяет кучу методов, а когда другой класс включает этот модуль, эти методы доступны в этом классе. Поэтому, если кто-то использует метод типа each_with_index в массиве, и вы говорите себе: «Мне интересно, как работает этот метод. Я проверю документы Array». Вы не найдете этот метод в документах Array. Когда вы ищете определение метода и не можете найти его в документах Array, вам необходимо изучить документы Array, чтобы узнать, какие модули включены в класс Array; то вы увидите, что Array включает Enumerable. Таким образом, вы можете щелкнуть ссылку Enumerable, и там вы найдете определение для each_with_index. Попробуй.

Я думаю, что вы действительно имеете в виду: что такое перечислитель?

И перечислитель - это вещь, которая может пройти (то есть итерации) элементы коллекции (массив, хэш и т. Д.). Однако, если вы только начали кодирование, вам нужно только беспокоиться о том, как найти определения методов в документах, и, надеюсь, вышесказанное выберет это. Перечислители выходят на горизонт вашего будущего.