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

解決済みの質問

クラスメソッドのインスタンスメソッドからの呼び出し

クラスメソッド“say”を定義しました。
クラス外からこれを呼び出すときは
Hoge.say 'hello'
で、同じクラス内の、インスタンスメソッド“hello”からクラスメソッド“say”を呼び出したいとき、クラス外から呼び出すのと同じように呼び出すことはできました。

class Hoge
 def self.say(word)
  puts word
 end
 def hello
  Hoge.say('hello')
 end
end


しかし、メソッド“hello”内にHogeというクラス名を直書きしたくないのですが、どんな文法を使用すればよろしいでしょうか?
# Hoge#hello内での試行錯誤
self.say 'hello' => エラー
say 'hello' => エラー

ひょっとして、クラス名を直書きする以外手段はないのでしょうか・・?

投稿日時 - 2009-04-26 11:31:07

QNo.4910050

困ってます

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

def hello
 self.class.say('hello')
end
でしょうか。何かもっと違う書き方もありそうな気もしますけど。

投稿日時 - 2009-04-26 12:21:11

お礼

確かに・・示されれば、あーなるほどと思いました。

なんだかずばりベストな回答である気がしますが、
何かもっと違う書き方、思いついたらお願いします。

Thanks!

投稿日時 - 2009-04-26 23:57:46

ANo.1

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

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

回答(1)

あなたにオススメの質問