方法行的`__LINE__`

时间:2016-05-14 08:08:21

标签: ruby reflection

def line

  puts __LINE_ # [sic]

end

line()

打印"2"。但它应该打印"5",因为该方法在那里被调用。为什么我可以改变这个问题?它应该用__LINE_ [原文如此]编写。

1 个答案:

答案 0 :(得分:1)

__LINE__指令报告它所在的行,而不是调用者的行。

例如,这个简短的测试程序:

def line
  puts __LINE__
end

def line_2
  puts __LINE__
end

line
line_2

将报告此输出:

2
6

这是预期的输出,因为__LINE__出现在源代码的第2行和第6行。