よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

January 02, 2006 [おもひで]

[Ruby] Moduleのネスト

よくやる間違いメモ。

module A
  module_function
  FOO = "foo"
  def foo; p FOO; end
  
  module B
    extend A  #(1)
    module_function
    def bar
      foo     #(2)
      p FOO   #(3)
    end
  end
end
A::B.bar

上記(1)でA::BはAをextendしないと(2)でエラーになるけど、(3)は使える。なんとなく、メソッド呼び出しもできちゃって良いような気がする、というかいつもそれで間違える。あ、でも、@@foo, @foo等の変数たちもextendしないとダメなのね。定数だけ例外、なのか・・・。


編集