Rubyでは、「クラス」メソッドがオブジェクトの型を返す方法と同様に、メソッドの名前を決定する方法はありますか?
例えば:
def example_method
puts method_name
end
#=> "example_method"
Rubyでは、「クラス」メソッドがオブジェクトの型を返す方法と同様に、メソッドの名前を決定する方法はありますか?
例えば:
def example_method
puts method_name
end
#=> "example_method"
ここからこの方法を試してください:
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 の回答を参照してください。