2012-03-01 6 views
0

私は、次のモジュールがあります。それは、クラスの中に含まれている場合Rubyのモジュール方式アクセシビリティ

module Foo 
    def f1 x 
    puts "f1(#{x})" 
    end 
    def Foo.f2 x 
    puts "f2(#{x})" 
    end 
end 

を:

class Bar 
    include Foo 

    Foo.f2 "bar" # This works 
    f1 "bar"  # Missing method 

    def b x 
     f1 x  # This works too 
    end 
end 

なぜF1の挙動は2例では違うのですか?

どのようにモジュールメタデータの範囲が定義されていますか?

f1は、f1 "bar"のように動作するように記述できますか?例えばRakefileのtaskのように?

答えて

1

Barにクラスメソッドを追加する場合は、includedを使用します。 Yehuda's post on the subjectを参照してください。あなたが実際にやろうとしていることに(ある程度)依存しています。

関連する問題