【问题标题】:print + each() block - why does joining not work?print + each() 块 - 为什么加入不起作用?
【发布时间】:2009-02-12 21:18:04
【问题描述】:

我期待这个输出:

output:xyz

但如果我输入以下内容:

a = ["x", "y", "z"]
print "output:" + a.each {|i| print i}.to_s

为什么我在单词输出之前和之后都会得到一个“xyz”?

xyzoutput:xyz 

【问题讨论】:

    标签: ruby-on-rails ruby syntax


    【解决方案1】:

    在 irb 中:

    >> %w{x y z}.each {|i| i }
    => ["x", "y", "z"]
    

    调用each 的返回值是调用它的Enumerable 对象。所以你基本上打印出你传递给each的块中数组的每个元素,然后将数组转换为字符串并再次打印,将它与字符串"output:"连接起来。

    【讨论】:

      【解决方案2】:

      你想要的可能是:

      puts "output: #{a.join}"
      

      或者,更详细地说,如果这个想法更清晰:

      puts "output: #{a.map {|element| element.to_s}.join}"
      

      【讨论】:

        猜你喜欢
        • 2012-07-30
        • 2011-02-27
        • 1970-01-01
        • 2015-01-19
        • 1970-01-01
        • 1970-01-01
        • 2022-06-29
        • 2021-05-27
        • 2011-03-20
        相关资源
        最近更新 更多