不知道这个术语叫什么(替代?),但是如果你在 python 中输入
num1 = 4
num2 = 2
print("Lucky numbers: %d %d" %(num1, num2))
你得到“幸运数字:4 2”
我如何在红宝石中做到这一点?
尝试执行上述方案时,如果我有一个变量,它就可以工作,但如果我需要插入多个变量,则括号不是有效的语法。
不知道这个术语叫什么(替代?),但是如果你在 python 中输入
num1 = 4
num2 = 2
print("Lucky numbers: %d %d" %(num1, num2))
你得到“幸运数字:4 2”
我如何在红宝石中做到这一点?
尝试执行上述方案时,如果我有一个变量,它就可以工作,但如果我需要插入多个变量,则括号不是有效的语法。
您可以在 Ruby 中使用称为字符串插值的方法来完成此操作。
前任:
num1 = 4
num2 = 2
puts "Lucky numbers: #{num1} #{num2}";
这里 #{} 中的每个变量都被解释为不是一个字符串,而是一个变量名,并且值被替换。
num1 = 4
num2 = 2
print "Lucky numbers: %d %d" % [num1, num2]
n1, n2 = 17, 42
puts "Lucky single number: %d" % n1
puts "Lucky multiple numbers: %d %d" % [ n1, n2 ]
puts "Lucky inline interpolation: #{n1} #{n2}"
有关String#%
方法中允许的格式的文档,请阅读Kernel#sprintf
.
您还可以使用哈希进行字符串替换。如果您有多个需要用相同字符串替换的实例,这很有用。
p "%{foo} == %{foo}" % {:foo => "bar" }
# => "bar == bar"
最接近模仿 Python 中的语法的 Ruby 方法是sprintf
和format
,它们是彼此的别名。您可以在Ruby Docs中深入了解它们。
这是一个例子:
num1 = 4
num2 = 2
sprintf("Lucky numbers: %d %d", num1, num2)
这将输出:“幸运数字:4 2”
括号当然是可选的。
这称为打印格式。
查看更多示例Ruby 格式化打印
你试过类似的东西"%d"%10
吗?它评估为"10"
1.9.3-p0 :003 > "%02x"%(10)
=> "0a"
1.9.3-p0 :004 >
1.9.3-p0 :005 > print "Nicely formatted string with an int: %d" % 10
Nicely formatted string with an int: 10 => nil
1.9.3-p0 :006 >