【发布时间】:2019-02-19 01:52:15
【问题描述】:
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
因此,我对不需要生成包含所有值的数组作为中间步骤的解决方案特别感兴趣。
【问题讨论】:
-
“#join 因特定原因被省略” - 一些可枚举项是无限的。数组永远不会。
-
我怀疑我理解编辑部分的要求。如果你想在不转换为数组的情况下加入,你可以像你一样
inject。 -
JFYI,您建议用
inject替换已损坏。但是,是的,这是一种有效的方法。 -
“#join 是否因特定原因被省略” --
#join是否随时出现? -
@SergioTulentsev 谢谢。修好了。
标签: ruby string enumerable