私はそれ自体からメソッド名を取得しようとしています:
def funky_method
self.inspect
end
「メイン」を返します。
代わりに「funky_method」を返すにはどうすればよいですか?
私はそれ自体からメソッド名を取得しようとしています:
def funky_method
self.inspect
end
「メイン」を返します。
代わりに「funky_method」を返すにはどうすればよいですか?
コードは次のとおりです。
バージョン>=1.9の場合:
def funky_method
return __callee__
end
バージョン1.9未満の場合:
def funky_method
return __method__
end
__callee__
現在のメソッドの「呼び出された名前」を__method__
返しますが、現在のメソッドの「定義時の名前」を返します。
結果として、__method__
alias_methodと一緒に使用した場合、期待される結果は返されません。
class Foo
def foo
puts "__method__: #{__method__.to_s} __callee__:#{__callee__.to_s} "
end
alias_method :baz, :foo
end
Foo.new.foo # __method__: foo __callee__:foo
Foo.new.baz # __method__: foo __callee__:baz
非常に簡単:
def foo
puts __method__
end