我正在尝试从自身获取方法名称:
def funky_method
self.inspect
end
返回“main”。
如何返回“funky_method”?
答案 0 :(得分:21)
以下是代码:
对于版本> = 1.9:
def funky_method
return __callee__
end
对于版本< 1.9:
def funky_method
return __method__
end
答案 1 :(得分:10)
__callee__
返回"名称"当前方法,而__method__
返回定义中的"名称"目前的方法。
因此,当与alias_method一起使用时,__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
答案 2 :(得分:1)
很简单:
def foo
puts __method__
end