更改 ruby​​ sprintf 中参数的顺序

anu*_*uya 1 ruby printf

是否可以将参数的顺序更改为sprintf

喜欢sprintf(" this is %arg[2] test %arg[1]" , arg1, arg2)

我需要动态更改参数的顺序,这样可以吗sprintf

Mar*_*off 5

是的。

irb(main):007:0> arg1 = 'foo'
=> "foo"
irb(main):008:0> arg2 = 'bar'
=> "bar"
irb(main):009:0> sprintf("%3$0.3f this is %2$s test %1$s" , arg1, arg2, Math::PI)
=> "3.142 this is bar test foo"
Run Code Online (Sandbox Code Playgroud)

格式是%N$fmt其中 N 表示参数的序数位置,并且是正常使用时在符号fmt后面放置的内容。%sprintf