gpt4 book ai didi

compilation - 在编译时访问变量

转载 作者:行者123 更新时间:2023-12-03 16:19:06 24 4
gpt4 key购买 nike

will trait 提供对 Variable 的编译时访问权限它被称为。有没有其他方法可以访问Variable s 将安装在给定的词法范围内? (我知道我可以在运行时访问 Scalar s,但我正在尝试访问 Variable s)。
特别是,我希望能够执行以下操作(不起作用):

multi trait_mod:<is>(Sub \fn, :$foo) {
for fn.lexical_variables { #`(do stuff) }
}
有什么办法吗?

最佳答案

目前还没有,但是在 future 的 Raku 语言版本中应该是可能的。正在为 Raku 语言(目前称为“RakuAST”)定义标准 AST,并重写编译器前端以使其工作。一旦完成,它将在许多地方暴露出来。宏是最明显的消费者,但它也在计划中:

  • 使 block 或例程的 AST 可从特征中获得,以便特征可以检查甚至修改 AST
  • 引入自定义编译器 channel ,这些模块将被授予访问它们导入到
  • 范围内的整个 AST 的权限。

    其中第一个似乎可以满足您的用例。继续当前提议的 API,它可能看起来像这样:
    multi trait_mod:<is>(Sub $fn, :$foo!) {
    for $fn.ast.ast-lexical-declarations {
    say "Name: " ~ .lexical-name;
    when RakuAST::VarDeclaration::Simple { #`( my $x / state $x / ... ) }
    when RakuAST::VarDeclaration::Term { #`( my \x = ... ) }
    # Others, depending if you care about parameters, placeholder params, implicits, etc.
    }
    }

    关于compilation - 在编译时访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67469867/

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