我见过很多输出变量的方法。这些方法中哪个“更好”?
my_name = 'Jeff Hall'
my_height = 74
puts "Let's talk about %s." % my_name
puts "He's %d inches tall." % my_height
对比
puts "Let's talk about #{my_name}."
puts "He's #{my_height} inches tall."
另外,s和d之后代表%什么?
我见过很多输出变量的方法。这些方法中哪个“更好”?
my_name = 'Jeff Hall'
my_height = 74
puts "Let's talk about %s." % my_name
puts "He's %d inches tall." % my_height
对比
puts "Let's talk about #{my_name}."
puts "He's #{my_height} inches tall."
另外,s和d之后代表%什么?
除非我需要格式化字符串,否则我更喜欢第二种方式。有关样式的更多问题,请查看GitHub Styleguide for Ruby。
关于%s和%d。它们是格式化程序,它们的列表在Ruby Kernel::sprintf doc page 上。
请参阅该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代码非常令人讨厌,并且它们与其他语言有着悠久的历史(这就是它们看起来不像 Ruby 的原因),但它们功能强大且简洁。
我最近才偶然发现 % 称为嵌入。似乎它替代了您在 % 之后放置的内容。
例如
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]