我有一个模块定义为:
module MyApp
module Utility
def Utility.my_method
我想在其他几个类中使用该方法。但我不想打电话:
MyApp::Utility.my_method
我宁愿打电话:
Utility.my_method
这合理吗?我试过include MyApp::Utility
和include MyApp
无济于事。
答案 0 :(得分:2)
好吧,只需指定您想要的任何别名,例如:
ShortNameGoesHere = MyApp::Utility
ShortNameGoesHere.my_method
答案 1 :(得分:0)
以下是将my_method混合到类中的示例:
#myapp.rb
module MyApp
module Utility
def my_method
"called my_method"
end
end
end
#test.rb
require './myapp'
class MyClass
include MyApp::Utility
end
if __FILE__ == $0 then
m = MyClass.new
puts m.my_method
end
听起来你想在混合方法中维护模块的命名空间。我已经看到过这样做的尝试(https://stackoverflow.com/a/7575460/149212),但它似乎很混乱。
如果您需要将my_method命名为namespace,则只需在方法名称中包含模块标识符:
module MyApp
module Utility
def util_my_method
"called my_method"
end
end
end