【发布时间】:2014-04-09 04:09:39
【问题描述】:
假设我有一个函数:
def foo()
puts getFunctionIAMIn()
end
我希望输出为:“foo” 如果我有这个代码:
def foo1()
puts getFunctionIAMIn()
end
我希望输出为:“foo1”
【问题讨论】:
-
问题,换一种说法,我如何实现 getFunctionIAMIn() ?
假设我有一个函数:
def foo()
puts getFunctionIAMIn()
end
我希望输出为:“foo” 如果我有这个代码:
def foo1()
puts getFunctionIAMIn()
end
我希望输出为:“foo1”
【问题讨论】:
使用__method__写如下:
def foo()
puts __method__
end
以上是正确的,但__callee__ 在技术上听起来更正确。
__method__ 返回定义的名称,__callee__ 返回被调用的名称。They are same usually, but different in a aliased method.
def foo
[__method__, __callee__]
end
alias bar foo
p foo #=> [:foo, :foo]
p bar #=> [:foo, :bar]
【讨论】:
__callee__有什么不同吗?
您可以为此使用__method__:
def test_method
__method__
end
【讨论】: