Итераторы – это не что иное, как методы, поддерживаемые коллекциями. Объекты, которые хранят группу элементов данных, называются коллекциями. В Ruby массивы и хеши можно назвать коллекциями.
Итераторы возвращают все элементы коллекции один за другим. Здесь мы будем обсуждать два итератора, each и collect. Давайте рассмотрим их подробно.
Итератор each возвращает все элементы массива или хэш.
collection.each do |variable| code end
Выполняет code для каждого элемента в collection. Здесь collection может быть массивом или ruby хешем.
#!/usr/bin/ruby ary = [6,7,8,9,10] ary.each do |i| puts i end
Это приведет к следующему результату:
6 7 8 9 10
Вы всегда связываете итератор each с блоком. Он возвращает каждое значение массива, один за другим, в блок. Значение сохраняется в переменной i, а затем отображается на экране.
Итератор collect возвращает все элементы коллекции.
collection = collection.collect
Метод collect не обязательно должен быть связан с блоком. Метод collect возвращает всю коллекцию, независимо от того, массив или хэш.
#!/usr/bin/ruby a = [6,7,8,9,10] b = Array.new b = a.collect puts b
Это приведет к следующему результату:
6 7 8 9 10
Обычно вы используете метод collect, когда хотите что-то сделать с каждым из значений, чтобы получить новый массив. Например, этот код создает массив b, содержащий 10 раз каждое значение в a.
#!/usr/bin/ruby a = [6,7,8,9,10] b = a.collect{|x| 10*x} puts b
Это приведет к следующему результату:
60 70 80 90 100