#早起きしてライセンスでもやろとしたら、げにおもしろげな話題が。 メインストリームのすれっど/Q利用談義からはずれますけど、もともとの問題 意識に興味あり。 Shin'ya Adzumi さん wrote : >あづみです。 > >とあるメソッドが呼び出されたときに呼び出し元によって動作を変える >ようにしたいのですが、呼び出し元のクラスを知る事ってできるのでしょ >うか? > >やりたかったのは以下のような事でして。 > def recv > @queue[呼び出し元のクラス.to_s.downcase].pop > end あづみさんおはようございます。 わたしの場合、「自分を見失うこと」が多いので(笑)デバッグ用に、こういう メソッド(関数)を用意してます。 def whoami return self.class.name end シッポの".name"がコツで(つけないと :シンボル になる)、これでStringに 落ちますので、これみて挙動を変えるデバッグツール書くとき楽(←あづみさん の当初の問題意識に近くないっすか?)。##予めクラス名に一定の規則性をつ けとけばいろいろおもしろいことができたりする(余談)。 んでもって、「自分のことを誰が呼んだか」を知りたいときは、whoami を引数 にしちゃうわけ。 あづみさん的な例を作ると。 def recv(caller, x) print "Class:",caller," called me with ",x,"\n" end ##recvを呼ぶときは、第一引数を whoami にすること(マクロがほしいとこだ ね)。 例えば、、使い方↓↓ class Hogehoge def callrecv recv(whoami, 1) end end hoge=Hogehoge.new hoge.callrecv 実行結果: Class:Hogehoge called me with 1 (最終目的は別にして)当初ねらってたのはこんなワザぢゃなくて?? ..Tacos(ozaki / ruby-lang.org)