可能重复:
How to get the name of the calling method?发现呼叫者方法在Ruby中
我有一个方法#foo
。该方法可以从许多地方(范围)调用。我需要#foo
找出它从哪里被调用。但不是堆栈跟踪(如#caller
返回),我想要方法的纯名称(如#__callee__
返回)。 Ruby中存在一种方法吗?
可能重复:
How to get the name of the calling method?发现呼叫者方法在Ruby中
我有一个方法#foo
。该方法可以从许多地方(范围)调用。我需要#foo
找出它从哪里被调用。但不是堆栈跟踪(如#caller
返回),我想要方法的纯名称(如#__callee__
返回)。 Ruby中存在一种方法吗?
您可以使用__method__
。把它放在任何方法体中,它应该提供方法的名称。并且您始终可以使用.class
或.class.ancestors
获取上下文。
嗯,看起来'__method__'和'__callee__'(当前范围的名称)一样。我想要以前的范围。所以,如果'#bar'调用'#foo',我想要一个我可以从'#foo'调用的方法,它会返回''bar“ –
不是内置方法,但这里有一个类似的问题:http://stackoverflow.com/questions/5100299/how-to-get-the-name-of-the-calling-method-in-ruby –
是的,我想这不是那么糟糕。谢谢。 –