2016-09-02 23 views
1
class Foo 
    include Bar 
    include Baz 
end 

module Bar 
    def do_something 
    end 
end 

module Baz 
    do_something 
end 

BazモジュールにはBarへのアクセス権がありません。それが方法を呼ぶ方法はありますかBarRubyで別のモジュールで定義されたメソッドを呼び出す方法は?

一つのアプローチは、BarBazを拡張されて、私はにしたい代わりFooでそれらのすべてが含まれています。

+0

'のでdo_something'のみから呼び出されますBaz。 –

答えて

2

何らかの理由であなたがにしたくない場合はBarBazは、あなたがBarBazの内側に拡張しことオブジェクトを作成することができます拡張:

module Bar 
    def do_something 
    puts 42 
    end 
end 

module Baz 
    Object.new.extend(Bar).do_something # prints 42 
end 
関連する問題