tin*_*ino 6 introspection raku
在 Raku 中,我如何列出:
为了列出作用域中的词法变量,我使用say ::;
和Pseudo packages。
你不能,一般。
我想从技术上讲,您可以设计一个 pad walker 例程,该例程将检查所有 pad 以查看 pad 中是否定义了动态变量并创建它的列表。但是一些动态变量在实际使用之前实际上并不存在,例如$*DISTRO
(PROCESS::
如果它被引用,则它存在于命名空间中):
say PROCESS::<$DISTRO>:exists; # False
$*DISTRO; # just need to refer to it
say PROCESS::<$DISTRO>:exists; # True
Run Code Online (Sandbox Code Playgroud)
编译时变量通常只存在于编译时,并且通常被编码生成为常量。一个主要的例子是$?LINE
,它的值取决于代码中的行。
包可以是词法 ( my
) 范围或OUR::
范围。因此,可以找到它们。降入子类的大问题是乐堂是一个不负责任的父母。一个包知道它的父类,但反过来不知道。
本PseudoStash
类包含一个包含所有可能的假包的名称内部数据结构,而不是外部可用。我想它可以这样制作。
也许关于您为什么需要这些信息的更直接的问题会给出更好、更有用的答案?