2012-05-09 141 views
1
var = 5 

puts "Method #1: #{var}" 
puts "Method #2: %d" % var 

我在尋找每種方法的優點和缺點,如果有的話。這兩種使用put命令的方法有什麼區別?

+0

請注意,您使用'puts'這一事實是無關緊要的,這兩個都是完全有效的表達式,而沒有'puts'。 –

+0

我意識到了。它與字符串格式化/操作有關,而不是'puts'關鍵字,對吧? – stanigator

+0

是的,前者只是普通的字符串插值,後者實際上是一個[字符串方法](http://ruby-doc.org/core-1.9.3/String.html#method-i-25)。 –

回答

3

第一個是簡單的字符串插值,第二個是語法糖Kernel#sprintf

對於只需要生成包含可變數據的字符串的情況,請使用第一種情況。第二種方法更適合於當您需要進行專門格式化而不僅僅是將變量放入字符串中時。第一個將會有更好的性能,所以要這樣做,除非你需要專門的格式。

它出現的情況下,"hello #{var}""hello " + var快得多。

+2

它不是「sprintf的語法糖」,它是'String#%'方法。 – Phrogz