2012年12月18日火曜日

RubyでModuleのmethodが呼び出せないのはmodule_functionしてないから

module_function :method_name [,:method_name2...]

きっと基本中の基本なんでしょうけど、以下のようなコードは動きません。


module A
  def a
    puts "a"
  end
end

A.a #呼び出し name error


module_functionで指定すると動きます


module A
  def a
    puts "a"
  end
  module_function :a
end

A.a #呼び出し


基本的なことなんだろうけど、忘れちゃうことだってあるんだ。人間だm...。でもなぜ??module_functionせずに呼び出せたらまずいものなだろうか?謎。

0 件のコメント: