2012-04-09 67 views
4

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

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

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

回答

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),但它们是强大而简洁的。

0

我只是最近偶然发现了被称为嵌入的%。它似乎代替了你在%之后放置的内容。

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]