Когда я начал учиться программировать на Ruby, перебор массивов и хешей оказался сложной задачей. Знание разницы между #each, #map, #select и другими важными перечислениями чрезвычайно важно для понимания на раннем этапе написания кода. Вот краткое руководство, которое поможет понять различия между некоторыми полезными перечисляемыми методами Ruby.

#map или #collect

Методы #map и #collect имеют одинаковую функциональность. Согласно официальной документации Ruby, эти методы «возвращают новый массив с результатами выполнения block один раз для каждого элемента в enum».

Вы можете видеть, что исходная переменная равна [1, 2, 3, 4, 5]. Когда вы используете #map в этом массиве, вы передаете каждый элемент в блок, который умножает элемент на 5 и возвращает измененный массив. Однако этот метод не изменяет исходную переменную массива.

# выбрать

Метод #select вернет новый массив всех элементов исходной коллекции, для которых условие возвращает true. Этот метод просматривает данные и сужает коллекцию до требуемых элементов (или тех, которые оцениваются как истинные).

В этом примере массив равен [1, 2, 3, 4, 5], а желаемый набор состоит только из четных чисел. Возвращаемое значение будет [2, 4], поскольку эти элементы четные. Однако этот метод не изменяет исходное значение массива.

#reject

Метод #reject вернет коллекцию для всех элементов, для которых условным условием является ложь.

Например, исходная переменная была массивом, равным [1, 2, 3, 4, 5, 6, 7, 8, 9,10]. Блок кода проверял, был ли каждый элемент нечетным числом. Если это было так, оно было отклонено. Исходный массив не изменился.

#delete_if

Методы #delete удаляют все элементы массива, которые блок считает истинными.

#delete_if похож на #reject. Однако #delete_if изменит исходный массив.

#найти

Метод #find передает каждый элемент в блок и возвращает первый объект, для которого блок является истинным.

#any?

Этот метод вернет истину, если код в блоке оценивается как истина для ЛЮБОГО элемента в коллекции.

Есть масса других полезных методов. Я предлагаю взглянуть на официальную документацию Ruby, чтобы найти еще несколько методов Enumerable:

Https://ruby-doc.org/core-2.5.1/Enumerable.html