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
型
因此,我特别感兴趣的解决方案,不需要生成一个数组的所有值作为中间步骤。
3条答案
按热度按时间pod7payv1#
使用
Array#join
:字符串
或(实际上相同):
型
p8h8hvxi2#
字符串
lf5gs5x23#
你的问题中的代码已经是最优的了,但是可以删除你的块中的条件:
字符串
如果不向
#reduce
传递参数,则第一次调用该块时,acc
和str
将表示可枚举对象的前两个元素。最后额外的.to_s
是为了确保如果enumerable为空,则返回空字符串。