“正确”的方式输出字符串中的变量

时间:2012-04-09 17:12:34

标签: ruby

我已经看到了很多输出变量的方法。以下哪种方式“更好”?

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." 

此外,sd%之后代表什么?

3 个答案:

答案 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]