ruby - 连接可枚举以在 Ruby 中生成字符串

标签 ruby string enumerable

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

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

最佳答案

使用Array#join :

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

或者(实际上相同):

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

关于ruby - 连接可枚举以在 Ruby 中生成字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52328770/

相关文章:

ruby - 这段 Ruby 代码的作用是什么? : def self. 元类;类<< self ;自己;结尾;结尾

ruby-on-rails - 我该怎么做才能让一组用户显示一组照片

java - 为类编写简单的电子表格处理器。 Location 类的方法未通过单元测试。有什么帮助吗?

javascript - 正则表达式将Javascript中的字符串拆分为多个字符串的逻辑

c# - 为什么 Enumerable.All 对空序列返回 true?

ruby-on-rails - 如何使用 Ruby 2.7.0 修复 Rails 的警告消息

ruby - 使用 JRuby 是否意味着在所有应用程序上复制 Ruby?

javascript - 检查数组是否包含不同的值

c# - 为什么 Enumerable 不继承自 IEnumerable<T>

linq - 对 Enumerable<T> 中的所有元素执行特定操作