вторник, 31 мая 2011 г.

Немного про array и метод map в Ruby

В Ruby как и в других языках программирования есть массивы - класс Array.
Этот класс (Array) имеет много методов для работы с массивами раскажу об одном из этих методов map.
Поясню на примере:
Пусть есть массив arr1 = [4, 5, 6]
Мы можем создать новый массив arr2 на основе массива arr1 используя map.
arr2 = arr1.map { |a| a+6 } # [10, 11, 12]
Но есть особенность, мы хотим преобразовывать массив arr1 только для определенных элементов.
Например вот так: arr2 = arr1.map { |a| a+6 if (a > 4) } # [nil, 11, 12]
Как видно, если условие не выполнилось, то в новом массиве arr2 будут элементы nil. Для того, чтобы их не было можно воспользоваться методом compact.
arr2 = arr1.map { |a| a+6 if (a > 4) }.compact # [11, 12]
Во всех приведенных примерах методы map и compact создают ноые массивы.
Кто хочет может подумать, как оптимизировать работу с памятью.

Всем удачи.

Комментариев нет:

Отправить комментарий