哪个是正确的REPL或命令行?

问题描述 投票:1回答:1

当我编写对象类中缺少的方法时,每个接口的输出都不同。

代码是

class Object
  def method_missing(hgh)
    puts self
  end
end

当我像irb一样使用REPL时,我得到

enter image description here

当我使用命令行时,我没有收到任何错误,任何原因都将有所帮助,在此先感谢

ruby read-eval-print-loop irb method-missing
1个回答
2
投票

当您从命令行运行代码时:

ruby script.rb
所有发生的是它被[[e评估。

而像IRB

r这样的REPL则需要您输入,

e对其进行评估,并p将其插入

l oop。在这种情况下,[[e

从字面上评估您的代码破坏了REPL并导致随后的[[p rint失败。]]现在您可能对此有些困惑。 “在两种情况下都有打印件,我使用puts!”。我在这里指的是每次[[e评估后都可以看到的结果。在这种情况下,方法定义结果(=> :method_missing)。

它可能不仅是p本身。 REPL必须执行许多其他代码以保持状态,例如“在哪一行上定义了什么代码”

等。

考虑您刚才所做的事情-使

every对象具有every

方法可能返回nil。这不仅是针对您编写
in
REPL的代码。它也用于REPL本身的代码[[of。
© www.soinside.com 2019 - 2024. All rights reserved.