2009-12-08 2 views
0

Довольно новый для рубина, может кто-то объяснить, почему эти 2 вещи реагируют по-другому?Зачем нужны значения для рубина?

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

puts "#{a}" 
ABC 

a.to_s возвращает тот же результат, что и выход шаблонного, но не следует простой «ставит» сделать то же самое?

ответ

3

Как обсуждалось в this thread, и без уважительной причины, массивы имеют магически непоследовательное поведение, если задано puts.

array.each {|e| puts e }

такая же, как:

puts array

4

Указанное поведение puts заключается в том, что впоследствии он пишет материал с новой строкой. Если это массив, он записывает каждый элемент в новую строку.

Когда вы ставите a.to_s, сначала он делает to_s (в результате получается одна строка), а затем выводит эту строку с новой строкой позже.

Смежные вопросы