gpt4 book ai didi

ruby-on-rails - 类(class)开头的 '::' 如何影响范围 (ruby/rails)?

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

我在一个大型 Rails 项目中工作,我有一些文件:

app/services/my_service/my_action/my_model_2.rb:

module <my_service>
module <my_action>
class <my_model_2>
. . .
if some_var = <my_model>::MY_CONST
if some_Var = ::<my_model>::MY_CONST # <-- what is the difference here?

app/services/my_service/my_action/my_model.rb:

module <my_service>
module <my_action>
class <my_model>

app/services/my_service/my_model.rb:

module <my_service>
class <my_model>

app/models/my_model.rb:

class <my_model> < ActiveRecord::Base
. . .
MY_CONST = "my constant"

my_model_2.rb 有什么区别?

我如何正确地确定范围以访问 my_model_2.rb 中的每个模型?

请注意,app/models 类名与 app/services 类名相同。

最佳答案

前导 :: 强制 Ruby 解释器从顶级命名空间开始解析类名。这意味着,如果你有一个类 Foo::Bar::BazBoo 类/模块定义在这两个

  • 飞::嘘

Foo::Bar::Baz 中引用 Boo 实际上最终会到达 Foo::Boo 模块/类,而如果你使用 ::Boo 它将匹配 Boo 因为名称的解析将从主命名空间开始。

关于ruby-on-rails - 类(class)开头的 '::' 如何影响范围 (ruby/rails)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32183701/

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