似乎__FILE__和__LINE__常量被动态更新,正在执行当前的文件和行号,我想知道
Ruby中的行为是如何实现的?
我已经对源代码进行了修改,但是__LINE__和__FILE__出现的噪音太大了,我想知道任何人都可以帮助我指出源代码,并提供一个线索去了解它的行为.
在Rubinis或MRI中的解释将会很好.
解决方法
__FILE__和__LINE__都被替换为文字
directly in the parser:
case keyword__FILE__: return NEW_STR(rb_external_str_new_with_enc(ruby_sourcefile,strlen(ruby_sourcefile),rb_filesystem_encoding())); case keyword__LINE__: return NEW_LIT(INT2FIX(tokline));
换句话说,它们的行为就像你自己输入的结果字符串或数字一样.
请注意,对于__LINE__,这个doesn’t always behave how you’d expect.