Книга: Программирование на языке Ruby

8.1.13. Преобразование или отображение массивов

8.1.13. Преобразование или отображение массивов

Метод collect из модуля Enumerable часто позволяет сэкономить время и силы. Тем, кто привык к языку Smalltalk, он покажется интуитивно очевидным в большей степени, чем программистам на С.

Этот метод просто воздействует неким произвольным образом на каждый элемент массива, порождая в результате новый массив. Иными словами, он «отображает» один массив на другой (отсюда и синоним map).

x = %w[alpha bravo charlie delta echo foxtrot]
# Получить начальные буквы.
a = x.collect (|w| w[0..0]}  # %w[a b с d e f]
# Получить длины строк.
b = x.collect {|w| w.length} # [5, 5, 7, 5, 4, 7]
# map - просто синоним.
с = x.map {|w| w.length}     # [5, 5, 7, 5, 4, 7]

Имеется также вариант collect! (или map!) для модификации на месте.

x.collect! {|w| w.upcase}
# x равно %w[ALPHA BRAVO CHARLIE DELTA ECHO FOXTROT]
x.map! {|w| w.reverse}
# x равно %w[AHPLA OVARB EILRAHC ATLED OHCE TORTXOF]

Оглавление книги

Оглавление статьи/книги

Генерация: 1.211. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз