Ruby — это динамический объектно-ориентированный язык программирования, известный своей простотой и гибкостью. Одной из его ключевых особенностей является ключевое слово «yield», которое позволяет определять методы, которые могут принимать блоки кода. В этой статье мы погрузимся в мир «доходности» в Ruby и рассмотрим различные методы, использующие это мощное ключевое слово.
- each:
Методeach широко используется в Ruby для перебора коллекции. С помощью «yield» вы можете передать каждый элемент коллекции в блок кода для обработки. Вот пример:
def my_each(collection)
for item in collection
yield(item)
end
end
my_each([1, 2, 3]) { |num| puts num }
- map:
Метод «map» преобразует каждый элемент коллекции на основе логики, определенной в блоке. Он возвращает новый массив с преобразованными элементами. Вот пример:
def my_map(collection)
result = []
my_each(collection) { |item| result << yield(item) }
result
end
squared_numbers = my_map([1, 2, 3]) { |num| num * num }
- select:
Метод select фильтрует коллекцию на основе условия, определенного в блоке. Он возвращает новый массив, содержащий только те элементы, которые удовлетворяют условию. Пример:
def my_select(collection)
result = []
my_each(collection) { |item| result << item if yield(item) }
result
end
even_numbers = my_select([1, 2, 3, 4, 5]) { |num| num.even? }
- inject:
Метод «inject» объединяет все элементы коллекции, применяя операцию, определенную в блоке. Возвращает накопленный результат. Пример:
def my_inject(collection)
accumulator = collection[0]
my_each(collection[1..-1]) { |item| accumulator = yield(accumulator, item) }
accumulator
end
sum = my_inject([1, 2, 3, 4, 5]) { |accumulator, num| accumulator + num }
Ключевое слово «yield» в Ruby открывает мир возможностей, когда дело доходит до определения методов, которые могут принимать блоки кода. В этой статье мы рассмотрели некоторые наиболее часто используемые методы, использующие «доходность», такие как «каждый», «карта», «выбор» и «внедрение». Поняв и освоив эти методы, вы будете хорошо подготовлены к написанию чистого и выразительного кода Ruby.
Включив эти мощные методы в свои проекты Ruby, вы можете значительно повысить свою производительность и читаемость кода. Так что вперед, экспериментируйте с «доходностью» и раскройте истинный потенциал Ruby!