我有一个模块定义为:
module MyApp
module Utility
def Utility.my_method
我想在其他几个类中使用该方法。但我不想打电话:
MyApp::Utility.my_method
我宁愿打电话:
Utility.my_method
这合理吗?我已经尝试过include MyApp::Utility
,include MyApp
但无济于事。
我有一个模块定义为:
module MyApp
module Utility
def Utility.my_method
我想在其他几个类中使用该方法。但我不想打电话:
MyApp::Utility.my_method
我宁愿打电话:
Utility.my_method
这合理吗?我已经尝试过include MyApp::Utility
,include MyApp
但无济于事。
好吧,只需分配您想要的任何别名,例如:
ShortNameGoesHere = MyApp::Utility
ShortNameGoesHere.my_method
这是一个将 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 被命名空间,您可以简单地在方法名称中包含一个模块标识符:
module MyApp
module Utility
def util_my_method
"called my_method"
end
end
end