2013-02-26 121 views
2

我開始學習Ruby和我使用print,我看到了,它可以使用兩個字符串格式化:紅寶石差異

  1. print "#{var}"
  2. print "%r %d %r" % [var1,var2,var3]

當然之一不同之處在於,第一個參數不需要放置傳遞的參數類型,但我真正想知道的是,哪一個對Ruby更有用,哪些可以提供給我的其他提示。

謝謝。

+1

第一種不是格式化,它將一個變量插入到字符串中,在你的例子中,這是浪費CPU週期,因爲'print var'會完成同樣的事情,只會更快。 – 2013-02-26 23:08:51

回答

3

大多數人使用前一種方法,因爲它會自動調用對象的.to_s方法來顯示值。您可以通過覆蓋班級的.to_s方法來使用它,以使其顯示任何您想要的內容。

坦率地說,我從來沒有見過我看過的任何代碼中使用的第二種方法。

+2

第二種方法是經典C'printf'風格,在處理數字時非常有用,其中'%d'或'%.1f'經常用於以簡潔易讀的格式呈現浮點值。 – tadman 2013-02-26 22:23:26

+1

「printf」或「sprintf」格式對於任何格式化輸出,列式報告都非常有用。我經常在輸出編號結果時使用它。 – 2013-02-26 23:10:45

+0

我在https://github.com/stympy/faker/blob/master/lib/faker/company.rb#L24中遇到了第二種方法,它用於添加前導零。 – Bulwersator 2014-01-18 15:41:55