"require"在哪里定义?



我一直在乐道源代码中寻找require的实现,首先是出于好奇,其次是因为我想知道它是否返回了一些东西。

我查了sub require,它返回了这个命中,这实际上似乎是 require 的来源,但它被称为sub REQUIRE_IMPORT.它返回Nil并声明为这样,这几乎回答了我最初的问题。但现在我的问题是:从那个潜艇到require的映射在哪里?它真的是该函数的实现吗?是否还有其他一些以这种方式声明的函数?

require

不是子控件,而是一个语句控件(因此,在相同的类别中,如useiffor等)它由 Perl 6 语法解析,并且有几种不同的情况被接受。它是在 Perl 6 动作中编译的,它有很多事情要处理。

大部分工作被委托给各种CompUnit对象,这些对象也涉及use/need。它还必须处理require将引入的存根符号,因为给定词法范围内的符号集在编译时是固定的,并且REQUIRE_IMPORT实用程序子也涉及运行时符号导入。

关于它将评估什么的问题的答案在方法结束时:

$past.push($<module_name>
?? self.make_indirect_lookup($longname.components())
!! $<file>.ast);

这意味着:

  • 如果是require Some::Module则计算为查找Some::Module
  • 如果是require $file样式案例,请计算文件名

最新更新