当我在irb中输入以下行时,irb终止。
$ irb
irb(main):001:0> def !; end
=> :!
irb(main):002:0> !
/usr/local/lib/ruby/2.1.0/irb/input-method.rb:153:in `gets': private method `!' called for false:FalseClass (NoMethodError)
...
$
撇开定义或调用名为!
的方法是否有效的问题,我认为即使出现错误,irb也不应该退出。这是一个错误吗?你知道是什么原因造成的吗?
答案 0 :(得分:2)
将此代码放在文件中:
def !;
puts "Hi"
end
send(:!)
!();
Ruby(1.9.3)给出了这个:
Hi
testexclaim.rb:7:in `<main>': private method `!' called for nil:NilClass (NoMethodError)
在我的1.9.3 IRB中,似乎是在解释!作为not运算符,即使是括号。
在我看来,因为send
有效,所以这比任何其他IRB和Ruby都无法处理的解析错误更多。