我正在尝试从自身获取方法名称:
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