Boo*_*oon 2 ruby scope module class
我想通过将它们放在一个模块中来命名我的Ruby类.实际上,如果我决定发布我的Ruby gem以便类名不与另一个gem中的现有类冲突,这是一个好主意.我知道我可以为一堂课做以下事情A::B:
module A
class B
end
end
Run Code Online (Sandbox Code Playgroud)
但是,上面的内容非常麻烦,因为我需要将所有类定义放在一个Ruby源文件中,以便将它们放在模块下.我宁愿将我的类定义保存在单独的源文件中,就像Java项目一样,那么当它们在单独的文件中定义时,如何将类添加到模块中呢?
在这种情况下接受的做法是将每个文件包装在module块中
# a/b.rb
module A
class B
end
end
# a/c.rb
module A
class C
end
end
Run Code Online (Sandbox Code Playgroud)
顺便说一句.由于常量的解析方式,建议使用上面引用的长格式代替class A::B
(http://blog.honeybadger.io/avoid-these-traps-when-nesting-ruby-modules/).