2

Rubyでは、「クラス」メソッドがオブジェクトの型を返す方法と同様に、メソッドの名前を決定する方法はありますか?

例えば:

def example_method
  puts method_name
end

#=> "example_method"
4

1 に答える 1

3

ここからこの方法を試してください:

module Kernel
 private
  def current_method_name
    caller[0] =~ /`([^']*)'/ and $1
  end
end


class Foo
 def test_method
   current_method_name   # "test_method"
 end
end

これは古いバージョンの Ruby (< 1.9) で動作します。新しいバージョンについては、Ben によって強調表示されている他の StackOverflow の回答を参照してください。

于 2009-04-08T04:59:55.523 に答える