1

私は次のように定義されたモジュールを持っています:

module MyApp
  module Utility
    def Utility.my_method

そのメソッドを他のいくつかのクラスで使用したいと思います。しかし、私は電話する必要はありません:

MyApp::Utility.my_method

私はむしろ単に電話したい:

Utility.my_method

それは合理的ですか?私は試しましたがinclude MyApp::Utilityinclude MyApp役に立ちませんでした。

4

2 に答える 2

2

必要なエイリアスを割り当てるだけです。たとえば、次のようになります。

ShortNameGoesHere = MyApp::Utility
ShortNameGoesHere.my_method
于 2012-12-31T18:15:42.793 に答える
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 に名前空間を付ける必要がある場合は、メソッド名にモジュール識別子を含めるだけです。

module MyApp
  module Utility
    def util_my_method
      "called my_method"
    end
  end
end
于 2012-12-31T17:43:31.360 に答える