присоединиться к перечислимому для создания строки в Ruby - PullRequest
0 голосов
/ 14 сентября 2018

Массивы 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

Поэтому меня особенно интересуют решения, которые не требуют генерации массива со всеми значениями в качестве промежуточного шага.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018
> [*'a'..'z'] * ' some separator '

#=> "a some separator b some separator c some separator d some separator e some separator f some separator g some separator h some separator i some separator j some separator k some separator l some separator m some separator n some separator o some separator p some separator q some separator r some separator s some separator t some separator u some separator v some separator w some separator x some separator y some separator z"
0 голосов
/ 14 сентября 2018

Использование Array#join:

('a'..'z').to_a.join(' some separator ')

Или (фактически то же самое):

[*'a'..'z'].join(' some separator ')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...