如何在运行时获取调用方法的名称

时间:2018-12-05 03:50:45

标签: ruby

我有:

def outer_method()
  called_method()
end

def called_method()
  puts "name of outer_method"
end

called_method是否有可能获得outer_method的名称而无需在__method__中分配outer_method并将其用作{{1}的自变量}?

1 个答案:

答案 0 :(得分:1)

是的。一个老派的方法是这样:

def outer_method
  called_method
end

def called_method
  puts caller.first[/(?<=`).+(?=')/]
end

outer_method
# >> outer_method

一种更现代,更强大的方法是:

def outer_method
  called_method
end

def called_method
  puts caller_locations.first.label
end

outer_method
# >> outer_method