2009-12-08 33 views
0

对于ruby来说相当陌生,有人可以解释为什么这两样东西的反应不同吗?为什么ruby的输出值是这样的?

a=["A","B","C"] 
puts a 
A 
B 
C 

puts "#{a}" 
ABC 

a.to_s返回与模板输出相同的输出,但不应该简单的“puts a”做同样的事情吗?

回答

3

正如在this thread中所讨论的那样,并没有很好的理由,当给予puts时,数组具有奇迹般的不一致行为。

array.each {|e| puts e }

相同:

puts array

4

puts的指定行为是之后用新行写入内容。如果它是一个数组,它会用换行符写入每个元素。

当你放置a.to_s时,它首先执行to_s(产生一个单一的字符串),然后输出带有换行符的单个字符串。