Массивы Ruby имеют метод #join
, который создает строку, соединяя элементы массива, добавляя необязательный разделитель.
Другие перечисляемые, например диапазоны, не имеют того же метода.
Вы можете эмулировать поведение, используя #inject
, например
('a'..'z').inject('') do |acc, s|
if acc.empty?
s
else
acc << ' some separator ' << s.to_s
end
end
Есть ли лучший способ присоединиться к перечислимым?Был ли #join
опущен по определенной причине?
РЕДАКТИРОВАТЬ:
Одна вещь, которая меня беспокоит, - это копирование массива перечислимого в массив.Конечно, это редко используется, но все же.Например:
(1 .. 1_000_000_000_000_000).to_a.join
Поэтому меня особенно интересуют решения, которые не требуют генерации массива со всеми значениями в качестве промежуточного шага.