在以下 ruby 代码中,输出变为:“x y”
x = "x %s"
y = "y"
z = "z"
print x % y %z
%z 被忽略。
我希望输出为“x y z”。
要了解 Ruby 语法的可能性和局限性,我只想使用 print 命令以及 %s 和 % 标志。我知道如何使用 sprintf 执行此操作,但我想知道是否有一种方法可以仅使用“打印”命令来执行此操作。
所以我尝试在变量“x”的定义中添加第二个 %s:
x = "x %s %s"
y = "y"
z = "z"
print x % y %z
但是我得到了这个错误:
in `%': too few arguments (ArgumentError)
使用 sprintf 你可以这样做:
x = "x %s %s"
y = "y"
z = "z"
print (sprintf(x, y, z))
输出就是我想要的:
x y z
但这太容易了。
有没有办法只使用“print”(不是 sprintf)而不使用 #{} 或将 y 和 z 组合成一个数组 [y,z]?
最佳答案
我其实不明白你想做什么,但是:
irb(main):001:0> x = "x %s"
=> "x %s"
irb(main):002:0> y = "y %s"
=> "y %s"
irb(main):003:0> z = "z"
=> "z"
irb(main):004:0> print x % y % z
x y z=> nil
和:
irb(main):006:0> x = "x %s %s"
=> "x %s %s"
irb(main):007:0> y = "y"
=> "y"
irb(main):008:0> z = "z"
=> "z"
irb(main):009:0> x % [y,z]
=> "x y z"
关于ruby-on-rails - 使用带有 %s 和 % 以及多个字符串替换参数的 print 而不是 sprintf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/542787/