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