gpt4 book ai didi

raku - "require"定义在哪里?

转载 作者:行者123 更新时间:2023-12-04 14:38:12 26 4
gpt4 key购买 nike

我一直在寻找Rakudo source用于执行 require ,首先是出于好奇,其次是因为我想知道它是否正在返回一些东西。

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

最佳答案

require不是子控件,而是语句控件(因此,在同一类别中,例如 useiffor 等)它是 parsed by the Perl 6 grammar并且有几种不同的情况被接受。是compiled in the Perl 6 actions ,这有相当多的处理。

大部分工作委托(delegate)给各种CompUnit对象,也与 use 相关/need .它还必须处理 require 的 stub 符号。将引入,因为给定词法范围内的符号集在编译时是固定的,而 REQUIRE_IMPORT实用程序 sub 也涉及运行时符号导入。

您的问题的答案将在方法结束时给出:

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

意思是:
  • 如果是 require Some::Module然后评估为 Some::Module 的查找
  • 如果是 require $file样式大小写,计算为文件名
  • 关于raku - "require"定义在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53630822/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com