首页 > 解决方案 > 加入可枚举以在 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_000_000_000_000_000).to_a.join

因此,我对不需要生成包含所有值的数组作为中间步骤的解决方案特别感兴趣。

标签: rubystringenumerable

解决方案


使用Array#join

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

或者(实际上相同):

[*'a'..'z'].join(' some separator ')

推荐阅读