我已经看到了很多输出变量的方法。以下哪种方式“更好”?
my_name = 'Jeff Hall'
my_height = 74
puts "Let's talk about %s." % my_name
puts "He's %d inches tall." % my_height
VS
puts "Let's talk about #{my_name}."
puts "He's #{my_height} inches tall."
此外,s
和d
在%
之后代表什么?
答案 0 :(得分:4)
我更喜欢第二种方式,除非我需要格式化字符串。有关样式检查的更多问题GitHub Styleguide for Ruby。
关于%s
和%d
。它们是格式化程序,列表位于Ruby Kernel::sprintf doc page。
答案 1 :(得分:3)
请参阅String#%
方法的文档,该方法引用了Kernel#sprintf
,其中介绍了%s
和%d
的含义。
字符串插值对于简单的自记录字符串很有用。但是,使用占位符可以缩短代码,并且还提供格式化功能,而不是简单地使用字符串插值:
values = { average:12.3, max:15.34734112, min:9.2314311 }
values.each do |name,value|
puts "%7s: %5.2f" % [ name, value ]
end
#=> average: 12.30
#=> max: 15.35
#=> min: 9.23
printf
代码很怪异,他们有一个very long history from other languages(这就是为什么他们看起来不像Ruby-esque),但它们很强大而且很简洁。
答案 2 :(得分:0)
我最近偶然发现了一个名为embedding的%。它似乎取代了你在%之后放的东西。
E.G。
name = "harry"
puts "My name is %s" %name
%s和%d的简单答案是%s用于字符串,其中%d用于小数。 继续前面的例子。
age = 35
puts "My name is %s and I am %d years old" %[name, age]