如何找出Ruby中调用该方法的行号?
让我们举一个简单的例子:如何找出Ruby中调用该方法的行号?,ruby,metaprogramming,Ruby,Metaprogramming,让我们举一个简单的例子: def funny_function(param) lineNumber = __LINE__ # this gives me the current line number puts lineNumber end 我们可以看到,我可以得到当前的行号。然而,我的问题是,是否有一种非侵入性的方法来确定该方法是从哪个行号(甚至是一个文件)调用的? 非侵入性意味着我不想让方法用户知道这一点,她只需提供param参数,例如: funny_function 'Haha
def funny_function(param)
lineNumber = __LINE__ # this gives me the current line number
puts lineNumber
end
我们可以看到,我可以得到当前的行号。然而,我的问题是,是否有一种非侵入性的方法来确定该方法是从哪个行号(甚至是一个文件)调用的?
非侵入性意味着我不想让方法用户知道这一点,她只需提供param
参数,例如:
funny_function 'Haha'
可能类似于调用方。\uuuu行\uuuu?您可以使用最近添加的
调用方位置。它返回一个Location
对象数组。有关详细信息,请参阅
无需解析调用方的返回。万岁
若要添加到此调用方位置。首先
或调用方位置(0)
获取最后一个方法位置,请增加参数以提取特定步骤。若要获取ast函数调用的行调用方[0]。扫描(/\d+/)。首先
:
def func0
func1
end
def func1
func2
end
def func2
func3
end
def func3
p caller[0].scan(/\d+/).first
end
func0
这是您所追求的吗?调用方
方法的响应有什么问题?调用方
返回当前执行堆栈,格式为:file:line:in`method'
。这有什么不对?只是不想解析iTunes使用caller_位置可以避免解析字符串。@pascalbetz我不知道,我后来看到了你的答案,这更好。我只是没有编辑我的答案,因为它是有效的,而且它提供了一种替代方法。另外,我不想解释你的答案。是的,这个方法是最近才添加的。据说它的性能更高。不,他正在寻找调用该方法的行号。
def b
puts "world"
end
def a
puts "hello"
end
p method(:a).source_location
=> ["filename.rb", 5]