Ruby

Теория: Способы определения массивов

В Ruby необычно много способов создания массивов. Они помогают сделать определение короче, и достаточно часто используются на практике. Особенно любит их линтер Rubocop.

# Обычное определение

# Сокращенное
%w[apple orange melon]

%w позволяет задавать массив перечислением без использования дополнительных символов. Даже в примере выше видно, насколько код получается короче и даже читаемее. Единственное ограничение такого способа – наличие пробелов в значениях. Каждый пробел считается разделителем значений:

%w[first second value third]
# ["first", "second", "value", "third"]

Технически, слова можно экранировать, но так обычно не делают из-за резкого ухудшения читаемости:

%w[first second\ value third]
# ["first", "second value", "third"]

Похожим способом создается массив символов, только вместо %w используется %i:

%i[apple orange melon] # [:apple, :orange, :melon]

Так же массивы можно создавать из диапазонов или итераторов:

(1..5).to_a # [1, 2, 3, 4, 5]
1.upto(5).to_a # [1, 2, 3, 4, 5]

В некоторых достаточно редких случаях можно воспользоваться динамическим созданием значений. Для этого используется конструктор Array и блок, вычисляющий значение для нужного индекса:

Array.new(5) { |i| i ** 2 }
# [0, 1, 4, 9, 16]

Рекомендуемые программы