重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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から名前空間のメソッドを呼び出したい場合、
どういった書き方をすればいいのでしょうか?

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

A 回答 (1件)

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



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

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!