我有一个Ruby方法,它有几个替代名称的别名,在方法中,我想知道哪个别名叫我。
This posting建议我可以使用__callee__
来获取此信息。但是,这在我的情况下不起作用,因为我在模块中,方法是模块方法。以下示例演示了此问题:
module Demo
extend self
def f
puts __callee__
end
alias g f
alias_method :h,:f
end
Demo.f
Demo.g
Demo.h
此输出
f
f
f
而不是
f
g
h
有人可以解释,为什么它不起作用,以及我如何正确地做到这一点?
更新:根据我在这里以及其他开发人员提供的反馈,这似乎是Ruby中的一个错误,已在2.3.4中修复。