Rubyで列挙可能を結合して文字列を生成する
概要
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 .. 1_000_000_000_000_000).to_a.join
したがって、私は中間ステップとしてすべての値を含む配列を生成する必要がないソリューションに特に興味があります。
解決策
Array#join を使用します。
('a'..'z').to_a.join(' some separator ')
または (事実上同じです):
[*'a'..'z'].join(' some separator ')