可能重複:
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 –
是的,我想這不是那麼糟糕。謝謝。 –