对于ruby来说相当陌生,有人可以解释为什么这两样东西的反应不同吗?为什么ruby的输出值是这样的?
a=["A","B","C"]
puts a
A
B
C
puts "#{a}"
ABC
a.to_s返回与模板输出相同的输出,但不应该简单的“puts a”做同样的事情吗?
对于ruby来说相当陌生,有人可以解释为什么这两样东西的反应不同吗?为什么ruby的输出值是这样的?
a=["A","B","C"]
puts a
A
B
C
puts "#{a}"
ABC
a.to_s返回与模板输出相同的输出,但不应该简单的“puts a”做同样的事情吗?
正如在this thread中所讨论的那样,并没有很好的理由,当给予puts
时,数组具有奇迹般的不一致行为。
array.each {|e| puts e }
相同:
puts array
puts的指定行为是之后用新行写入内容。如果它是一个数组,它会用换行符写入每个元素。
当你放置a.to_s时,它首先执行to_s(产生一个单一的字符串),然后输出带有换行符的单个字符串。