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

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

代码是

class Object
  def method_missing(hgh)
    puts self
  end
end

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

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

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

duxinlang 回答:哪个是正确的REPL或命令行?

tl; dr 答案是两个都是正确的。 REPL中只会发生更多事情。


当您从命令行运行代码时,例如:

ruby script.rb

所有发生的都是对其进行了 e 评估。

IRB之类的REPL会 r 充实您的输入,而 e 会对其进行评估,并 p 将其印成 l 哎呀。

在这种情况下, e 评估您的代码实际上破坏了REPL,并导致随后的 p rint失败。


现在您可能对此感到困惑。 “在两种情况下都可以打印,我使用puts!”。我在这里指的是每次 e 评估后可视化的结果。在这种情况下,方法定义结果(=> :method_missing)。


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

考虑一下您刚才所做的事情-做到了让每个对象具有每个方法可以返回nil的方法。这不仅限于您在REPL中 编写的代码。也用于REPL本身的代码

本文链接:https://www.f2er.com/3144929.html

大家都在问