2009-12-08 54 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(產生一個單一的字符串),然後輸出帶有換行符的單個字符串。