为什么ruby会输出这样的值?

时间:2009-12-08 16:50:01

标签: ruby

对红宝石来说相当新,有人可以解释为什么这两件事的反应不同吗?

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

puts "#{a}"
ABC

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

2 个答案:

答案 0 :(得分:4)

puts的指定行为是它之后用换行符写出东西。如果它是一个数组,它会用换行符写每个元素。

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

答案 1 :(得分:3)

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

  

array.each {|e| puts e }

     

与:

相同      

puts array