我期待这个输出:
output:xyz
但如果我键入以下内容:
a = ["x", "y", "z"]
print "output:" + a.each {|i| print i}.to_s
为什么在单词输出之前和之后得到'xyz'?
xyzoutput:xyz
答案 0 :(得分:4)
在irb:
>> %w{x y z}.each {|i| i }
=> ["x", "y", "z"]
对each
的调用的返回值是调用它的Enumerable
对象。因此,您基本上打印出要传递给each
的块中的数组的每个元素,然后将数组转换为字符串并再次打印,并将其与字符串{{1}连接起来}。
答案 1 :(得分:1)
可能你想要的是:
puts "output: #{a.join}"
或更详细地说,如果这个想法更清晰:
puts "output: #{a.map {|element| element.to_s}.join}"