2012-08-25 37 views
1

可能重複:
How to get the name of the calling method?發現呼叫者方法在Ruby中

我有一個方法#foo。該方法可以從許多地方(範圍)調用。我需要#foo找出它從哪裏被調用。但不是堆棧跟蹤(如#caller返回),我想要方法的純名稱(如#__callee__返回)。 Ruby中存在一種方法嗎?

+1

不是內置方法,但這裏有一個類似的問題:http://stackoverflow.com/questions/5100299/how-to-get-the-name-of-the-calling-method-in-ruby –

+0

是的,我想這不是那麼糟糕。謝謝。 –

回答

0

您可以使用__method__。把它放在任何方法體中,它應該提供方法的名稱。並且您始終可以使用.class.class.ancestors獲取上下文。

+0

嗯,看起來'__method__'和'__callee__'(當前範圍的名稱)一樣。我想要以前的範圍。所以,如果'#bar'調用'#foo',我想要一個我可以從'#foo'調用的方法,它會返回''bar「 –