【发布时间】:2011-10-24 01:25:08
【问题描述】:
当我尝试在源代码中提取方法的位置时,我可以这样做:
class Object
def source_position
puts caller.first
end
end
所以当我在位于源代码第 n 行的链中使用它时,它会给我想要的结果:
test.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 将作为行返回而不是n?
【问题讨论】: