我尝试获取调用当前方法的方法的名称
def first_method
my_method
end
def second_method
my_method
end
def my_method
puts "called from: #{method_name}"
end
和预期的输出:
“调用自:first_method”
“调用自:last_method”
我尝试获取调用当前方法的方法的名称
def first_method
my_method
end
def second_method
my_method
end
def my_method
puts "called from: #{method_name}"
end
和预期的输出:
“调用自:first_method”
“调用自:last_method”
def a
c
end
def b
c
end
def c
p caller
end
a
#=> ["/Users/phrogz/Desktop/tmp.rb:2:in `a'", "/Users/phrogz/Desktop/tmp.rb:11:in `<main>'"]
b
#=> ["/Users/phrogz/Desktop/tmp.rb:5:in `b'", "/Users/phrogz/Desktop/tmp.rb:12:in `<main>'"]
您可以使用正则表达式caller[0][/`(.+?)'/,1]
来匹配第一个中的名称。
这个答案对 Ruby 2.0+ 有更好的解决方案