Если мы называем caller
метод, мы получим что-то вроде:Извлечение информации о методе приемника из стека
prog.rb:3:in `a'
prog.rb:6:in `b'
prog.rb:9:in `c'
Это полезно для людей, но если бы я хотел, чтобы проанализировать стек программно, а не действительно, как два метода :a
может быть полностью несвязанным.
Есть ли способ/способ извлечь информацию о приемнике методов (например, его класс или идентификатор объекта)? Например:
prog.rb:3:in `Klass#a'
prog.rb:6:in `Modoole#b'
prog.rb:9:in `OtherKlass#c'
Форматирование является лишь примером; эта информация может быть Array
или что-то еще.
Я пытаюсь подражать этому с помощью TracePoint
, но создание отдельного стека - плохое решение. Есть ли какой-либо способ Ruby, который я пропустил в документах?
кажется _usually_ означает «когда код вызывается непосредственно из тела класса». – Borsunho
Ницца найти @ Борсуньо. Я добавил его к ответу. Я посмотрю, смогу ли я спросить кого-нибудь об основной команде Ruby. – Drenmi