我想在我定义的类/模块中添加命名空间,但我不想输入长格式
class A::B::C::D::<ClassName>
OR
module A
module B
module C
module D
class ClassName
end
end
end
end
end
换句话说,我只想定义类class ClassName
,然后需要一种方法将此类发送到名称空间A::B::C::D
这样我就可以像这样编写一堆代码:
# File Name: a/b/c/d/some_class.rb
class SomeClass
include SomeModule
# class content
end
# File Name: a/b/c/d/some_module.rb
module SomeModule
# module content
end
因为我的代码库中有太多的模块,所以我不想每次都输入前缀命名空间。但我想在最后说出这样的话:
SomeClass.add_to_namespace(A::B::C::D)
SomeModule.add_to_namespace(A::B::C::D)
重要:这也应该影响类命名空间查找,以便Ruby / Rails不会抱怨:
expected a/b/c/d/some_class.rb to define SomeClass
问题:命名空间中include
- 我的类会产生相同的效果吗?
module A::B::C::D
include ClassName
end
答案 0 :(得分:2)
看起来你问的问题有点多方面,但是如果你只想在另一个文件中使用该类而不必每次都输入命名空间,那么一个简单的解决方案就是重新定义它在您想要在
中使用它的文件中ClassName = A::B::C::D::ClassName
然后你可以做ClassName.method
就好了