こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

名前空間

module Mod1
def samemethod
p "Mod1.samemethod"
end
module_function :samemethod
end

module Mod2
def samemethod
p "Mod2.samemethod"
end
module_function :samemethod
end

class Cls
extend Mod1
extend Mod2
end

Mod1.samemethod # => (1)
Cls.Mod2.samemethod # => (2)

上の記述において、(1)は、"Mod1.samemethod" と表示されるのですが、
(2)が、undefined method `Mod2' for Cls:Class (NoMethodError)
となってしまいます。Clsから名前空間のメソッドを呼び出したい場合、
どういった書き方をすればいいのでしょうか?

御経験のある方、御教示願えたらと思います。

投稿日時 - 2013-01-08 18:16:17

QNo.7881951

すぐに回答ほしいです

質問者が選んだベストアンサー

module_functionは、privateメソッドで かつ モジュールの特異メソッドなので、(リファレンスを参照のこと)

モジュール名.メソッド名

以外の呼び出し方はできません。
解決法は、そもそも何をしたいのかによります。

投稿日時 - 2013-01-08 18:32:41

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問