如何在 Ruby 变量参数中使用 "#{...}?

How to use in Ruby variable arguments with "#{...}?

我想要这样的方法:

def process(text, *parameters)
   new_text = ...
end

调用函数的地方

process("#{a} is not #{b}", 1, 2)

导致 new_text1 is not 2 并使用

调用函数
process("#{a} does not exist", 'x')

导致 new_textx does not exist

或者使用替代方法而不是使用 "#{...}"(例如#1、#2)来为填充了 in/substituted.

的参数传递字符串

你可以这样做:

def format(text, *args)
  text % args
end

format("%s is not %s", 1, 2)
# => "1 is not 2"

format("%s does not exist", 'x')
# => "x does not exist"

String#% and Kernel#sprintf

因为上面的方法在内部使用了 String#% 直接使用 String#% 然后将其包装到另一个方法中实际上更短:

"%s is not %s" % [1, 2]
# => "1 is not 2"

"%s does not exist" % 'x'
# => "x does not exist"

注意本例中必须以数组的形式传入多个参数。