Главная страница » Ruby » 18. Методы массивов
Массивы в Ruby обладают множеством встроенных методов, которые облегчают работу с коллекциями данных. Эти методы позволяют выполнять различные операции, такие как добавление, удаление элементов, фильтрация и трансформация данных. В этом уроке мы рассмотрим ключевые методы массивов, которые часто используются в повседневном программировании.
each
Метод each
используется для перебора элементов массива. Он принимает блок, который выполняется для каждого элемента массива.
Пример:
numbers = [1, 2, 3, 4, 5]
numbers.each do |number|
puts number
end
map
Метод map
создает новый массив, содержащий результаты вызова блока для каждого элемента исходного массива.
Пример:
numbers = [1, 2, 3, 4, 5]
squared_numbers = numbers.map { |num| num ** 2 }
puts squared_numbers # => [1, 4, 9, 16, 25]
select
Метод select
создает новый массив, содержащий все элементы, для которых блок возвращает true
.
Пример:
numbers = [1, 2, 3, 4, 5]
even_numbers = numbers.select { |num| num.even? }
puts even_numbers # => [2, 4]
reject
Метод reject
создает новый массив, содержащий все элементы, для которых блок возвращает false
.
Пример:
numbers = [1, 2, 3, 4, 5]
odd_numbers = numbers.reject { |num| num.even? }
puts odd_numbers # => [1, 3, 5]
find
Метод find
возвращает первый элемент, для которого блок возвращает true
. Если нет таких элементов, возвращает nil
.
Пример:
numbers = [1, 2, 3, 4, 5]
first_even = numbers.find { |num| num.even? }
puts first_even # => 2
reduce
(или inject
)Метод reduce
(или inject
) применяется для сворачивания массива в одно значение, используя блок.
Пример:
numbers = [1, 2, 3, 4, 5]
sum = numbers.reduce(0) { |total, num| total + num }
puts sum # => 15
sort
Метод sort
возвращает новый массив с элементами, отсортированными по возрастанию.
Пример:
numbers = [5, 3, 1, 4, 2]
sorted_numbers = numbers.sort
puts sorted_numbers # => [1, 2, 3, 4, 5]
reverse
Метод reverse
возвращает новый массив с элементами в обратном порядке.
Пример:
numbers = [1, 2, 3, 4, 5]
reversed_numbers = numbers.reverse
puts reversed_numbers # => [5, 4, 3, 2, 1]
push
и <<
Методы push
и <<
добавляют элементы в конец массива.
Пример:
numbers = [1, 2, 3]
numbers.push(4)
numbers << 5
puts numbers # => [1, 2, 3, 4, 5]
pop
Метод pop
удаляет и возвращает последний элемент массива.
Пример:
numbers = [1, 2, 3, 4, 5]
last_number = numbers.pop
puts last_number # => 5
puts numbers # => [1, 2, 3, 4]
shift
Метод shift
удаляет и возвращает первый элемент массива.
Пример:
numbers = [1, 2, 3, 4, 5]
first_number = numbers.shift
puts first_number # => 1
puts numbers # => [2, 3, 4, 5]
unshift
Метод unshift
добавляет элементы в начало массива.
Пример:
numbers = [2, 3, 4, 5]
numbers.unshift(1)
puts numbers # => [1, 2, 3, 4, 5]
concat
Метод concat
объединяет массив с другим массивом.
Пример:
numbers1 = [1, 2, 3]
numbers2 = [4, 5, 6]
numbers1.concat(numbers2)
puts numbers1 # => [1, 2, 3, 4, 5, 6]
flatten
Метод flatten
возвращает новый массив, где все вложенные массивы преобразованы в одномерный массив.
Пример:
nested_array = [1, [2, 3], [4, [5, 6]]]
flat_array = nested_array.flatten
puts flat_array # => [1, 2, 3, 4, 5, 6]
split
Метод split
используется для разделения строки на массив подстрок по заданному разделителю. (Обратите внимание, что split
работает со строками, но может быть полезен при работе с массивами строк.)
Пример:
sentence = "Hello world from Ruby"
words = sentence.split
puts words.inspect # => ["Hello", "world", "from", "Ruby"]
Некоторые методы изменения массива, такие как push
и concat
, изменяют оригинальный массив, а не создают новый.
Пример ошибки:
numbers = [1, 2, 3]
numbers_push_result = numbers.push(4)
puts numbers_push_result # => [1, 2, 3, 4] (это же значение измененного массива)
Использование методов для работы с массивами, таких как map
и select
, может привести к неожиданным результатам, если не правильно переданы блоки.
Пример ошибки:
numbers = [1, 2, 3, 4, 5]
# Пропуск блока в методе map может привести к пустому массиву
squared_numbers = numbers.map
puts squared_numbers.inspect # => [nil, nil, nil, nil, nil]
Методы массивов в Ruby предоставляют мощные инструменты для работы с коллекциями данных. Понимание и правильное использование этих методов позволит вам более эффективно управлять массивами, выполнять сложные операции и писать более чистый и понятный код.
Напишите метод filter_and_square
, который принимает массив чисел, фильтрует только четные числа и возвращает новый массив, содержащий квадраты этих чисел.
Напишите метод merge_and_sort
, который принимает два массива и возвращает новый массив, состоящий из элементов обоих массивов, отсортированный по возрастанию.
Пример решения:
# Задание 1
def filter_and_square(numbers)
numbers.select { |num| num.even? }.map { |num| num ** 2 }
end
puts filter_and_square([1, 2, 3, 4, 5]) # => [4, 16]
# Задание 2
def merge_and_sort(array1, array2)
(array1 + array2).sort
end
puts merge_and_sort([3, 1, 4], [2, 5, 6]) # => [1, 2, 3, 4, 5, 6]
Проверьте свою программу, чтобы убедиться, что она правильно выполняет все операции и обрабатывает возможные ошибки.
Наша цель и главная задача сделать качественное образование в вашем браузере
Телефон: +375 33 910-08-92
Email: info@codefor.tech
Адрес: г. Барановичи, ул. Пирогова, д. 7
© 2024 Все права защищены. CodeFor.