不能将块传递给Ruby中的Kernel子方法

时间:2014-08-05 21:09:24

标签: ruby

我正试图在bash中运行ruby one-liner,这就是:

~$ echo a$'\n'b$'\n'c | ruby -pe 'sub(/./,"x")'
x
x
x
~$ echo a$'\n'b$'\n'c | ruby -pe '$_.sub!(/./){"x"}'
x
x
x
~$ echo a$'\n'b$'\n'c | ruby -pe 'sub(/./){"x"}'
-e:1:in `sub': wrong number of arguments (1 for 1..2) (ArgumentError)
        from -e:1:in `sub'
        from -e:1:in `<main>'

为什么命令#3不像命令#2那样工作?

(这是ruby 1.9.2。回声声明只提供三行输入)

1 个答案:

答案 0 :(得分:0)

看起来这是bug in 1.9.2。它是fixed for 2.0.0(和backported to 1.9.3)。修复只是升级到更新版本的Ruby。

如果可以的话,你应该升级,因为support for 1.9.2 has just ended