在Ruby中如何实现__LINE__和__FILE__常量?

前端之家收集整理的这篇文章主要介绍了在Ruby中如何实现__LINE__和__FILE__常量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
似乎__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.

原文链接:https://www.f2er.com/ruby/266185.html

猜你在找的Ruby相关文章