[ruby-list:38349] Re: the def name in current context

From: "NAKAMURA, Hiroshi" <nakahiro@...>
Date: 2003-09-03 06:31:21 UTC
List: ruby-list #38349
なひです。

> From: "ARIMA Yasuhiro" <fit0298@fitec.co.jp>
> Sent: Wednesday, September 03, 2003 12:46 PM

> Python で、以下のような記述がありました。
> 
> def main():
> if __name__ == '__main__':
> 
> 同様に、Ruby で current context のメソッド名を参照する方法は
> ありますか?
> 例外未対応の際に表示されるので、__LINE__ みたいに参照できる
> 擬似変数 __DEF__ のようなものがあるかと思ったのですが、
> 見つけられませんでした。

簡単な方法はありません。

  def main
    p caller(0)[0].scan(/[^`']+/).last
  end

とか

  set_trace_func proc { |e, t, t, m, *t| $myname = m if e == "call" }
  def main
    p $myname
  end

とか。スレッド禁止。冗談です。

簡単な方法は、どうなんでしょうね。staticに決まるならメリットは
少なそうです。dynamicに決められるのかな。

  def foo
    p __func__
  end
  alias bar foo

  foo
  bar
  method(:bar).call


In This Thread

Prev Next