gpt4 book ai didi

ruby - 为什么在 IRB 中使用 Refinement 时得到 "main.using is permitted only at toplevel"?

转载 作者:数据小太阳 更新时间:2023-10-29 07:06:31 25 4
gpt4 key购买 nike

我尝试在 IRB(v0.9.6,Ruby 2.3.0)中使用 Refinement:

module Foo
refine Object do
def foo() "foo" end
end
end

using Foo # => RuntimeError: main.using is permitted only at toplevel

这基本上是 the exact setup from the documentation (这会导致相同的错误)。

出了什么问题?我该如何解决这个问题?

最佳答案

这可能是 IRb 的错误或功能不当。众所周知,由于 IRb 的实现方式非常骇人听闻,因此它无法在所有极端情况下正常运行。

不兼容可能大家都知道,在Ruby中,定义在顶层的方法变成了Objectprivate实例方法,而在IRb中,它们变成了 Object 的公共(public) 实例方法。另一个明显的行为差异是,在 IRb 中,require_relative 不起作用,因为它相对于当前文件进行搜索,但在 IRb 中,没有当前文件。 p>

我认为,在可接受的语法方面也存在一些差异,与局部变量有关,以及它们何时定义和未定义。

因此,可能也存在一些行为差异并不是不可想象的。改进。事实上,我自己也遇到过该错误消息,并且在 IRb 之外运行完全相同的代码,无论是使用 ruby -e,从一个文件,还是从一个不同的 REPL,总是让它消失。

关于ruby - 为什么在 IRB 中使用 Refinement 时得到 "main.using is permitted only at toplevel"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34620550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com