【发布时间】: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
我期待这个输出:
output:xyz
但如果我输入以下内容:
a = ["x", "y", "z"]
print "output:" + a.each {|i| print i}.to_s
为什么我在单词输出之前和之后都会得到一个“xyz”?
xyzoutput:xyz
【问题讨论】:
标签: ruby-on-rails ruby syntax
在 irb 中:
>> %w{x y z}.each {|i| i }
=> ["x", "y", "z"]
调用each 的返回值是调用它的Enumerable 对象。所以你基本上打印出你传递给each的块中数组的每个元素,然后将数组转换为字符串并再次打印,将它与字符串"output:"连接起来。
【讨论】:
你想要的可能是:
puts "output: #{a.join}"
或者,更详细地说,如果这个想法更清晰:
puts "output: #{a.map {|element| element.to_s}.join}"
【讨论】: