当我尝试在源代码中提取方法的位置时,我可以这样做:
class Object
def source_position
puts caller.first
end
end
因此,当我在位于源代码第 n 行的链中使用它时,它会给我想要的结果:
测试.rb
.
.
n: 'abcde'.source_position
.
.
# => test.rb:n:in `<main>`
但是当我在这个命令之前换行时,它会返回链开始的位置而不是相关方法的位置:
.
.
n: 'abcde'.
n+1: source_position
.
.
# => test.rb:n:in `<main>`
或(在 ruby 1.9 中),
.
.
n: 'abcde'
n+1: .source_position
.
.
# => test.rb:n:in `<main>`
这是功能而不是错误吗?如果是这样,有没有办法获取方法的位置,以便在上面的最后两个示例中,n+1
将作为 line 而不是返回n
?