gpt4 book ai didi

ruby-on-rails - 模块自动将命名空间添加到被调用的方法

转载 作者:数据小太阳 更新时间:2023-10-29 08:44:18 24 4
gpt4 key购买 nike

我正在尝试创建一个 gem,我的 gem 需要一个我已添加到 gemspec 中的不同 gem。

我的问题是,当我尝试在代码中调用一个方法时,ruby 会自动将模块命名空间添加到我正在调用的方法中,然后我得到一个未初始化的常量错误。我在下面给出了一个基本示例。

lib/example_gem.rb

module FooModule

def bar
# this is the method I am trying to run
BAZ::Request.execute(123)
end
end

class Test
include FooModule
end

x = Test.new
x.bar

=>>>>>>>> uninitialized constant FooModule::Baz (NameError)

我不是想调用 FooModule::Baz,我想调用 BAZ::Request.execute(123)。任何帮助将不胜感激

最佳答案

尝试:

::BAZ::Request.execute(123)

关键字是“常量查找运算符”。我假设 BAZ 没有包装到另一个类或模块中,因此您需要在最顶层查找它。因此,您在 :: 前面加上。

现在您明白了为什么请求 (BAZ::Request) 需要在 BAZ 内。

关于ruby-on-rails - 模块自动将命名空间添加到被调用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35751592/

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