English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby базовый учебник

Ruby продвинутый учебник

Итераторы Ruby

Простыми словами: итерация (iterate) означает повторение одного и того же действия, поэтому итератор (iterator) это то, что используется для повторения одного и того же действия несколько раз.

Итератор этоколлекцияподдерживаемые методы. Объект, хранящий группу данных, называется коллекцией. В Ruby массив (Array) и хэш (Hash) можно назвать коллекцией.

Итератор возвращает все элементы集合а, по одному. В этой статье мы рассмотрим два типа итераторов,each и collect.

Ruby each Итератор

Итератор each возвращает все элементы массива или хэша.

грамматика

collection.each do |variable|
   код
конец

дляколлекциядля каждого элемента выполняется код. Здесь,集合 может быть массивом или хэшом.

Онлайн пример

#!/usr/bin/ruby
 
ary = [1,2,3,4,5]
ary.each do |i|
   puts i
конец

Результат выполнения примера выше:

1
2
3
4
5

each Итератор всегда связан с блоком. Он возвращает каждому значению массива по порядку. Значения хранятся в переменной i затем выводится на экран.

Ruby collect Итератор

collect Итератор возвращает все элементы集合а.

грамматика

collection = collection.collect

collect метод не всегда требует связи с блоком.collect метод возвращает весь набор данных, независимо от того, является ли это массивом или хешем.

Онлайн пример

Онлайн пример

#!/usr/bin/ruby
 
a = [1,2,3,4,5]
b = Array.new
b = a.collect{ |x|x }
puts b

Результат выполнения примера выше:

1
2
3
4
5

Внимание:collect метод не является правильным способом копирования массивов друг в друга. Есть другой метод под названием clone метод, используемый для копирования одного массива в другой.

Когда вы хотите выполнить некоторые действия для каждого значения, чтобы получить новый массив, вы обычно используете метод collect. Например, следующий код создаст массив, значения которого в 10 раз больше значений в массиве a.

Онлайн пример

#!/usr/bin/ruby
 
a = [1,2,3,4,5]
b = a.collect{|x| 10*x}
puts b

Результат выполнения примера выше:

10
20
30
40
50