2013-02-26 88 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