【发布时间】:2017-07-01 13:22:38
【问题描述】:
有没有办法获取 Perl 6 程序知道的所有已知类型(内置、定义、加载等)的列表?我没有特别的任务,这与确定我已经知道的类型是否已定义有点不同。
【问题讨论】:
有没有办法获取 Perl 6 程序知道的所有已知类型(内置、定义、加载等)的列表?我没有特别的任务,这与确定我已经知道的类型是否已定义有点不同。
【问题讨论】:
这应该可以解决问题:
.say for (|CORE::, |UNIT::, |OUTERS::, |MY::)
.grep({ .key eq .value.^name })
.map(*.key)
.unique
;
Perl 6 提供Pseudo-packages 允许间接查找在不同范围内声明/可见的符号。它们可以像哈希一样被访问和迭代。
CORE:: 中。 LEXICAL:: 会包含所有这些,但基于一些似乎并非如此的实验,它看起来像UNIT::、OUTERS::、和 MY:: 需要被搜索才能全部捕获。
这些伪包中定义的符号种类包括:
为了只获取类型,我对符号声明名称等于其对象类型名称的那些类型进行了 grep。
如果你只想要类,你可以添加以下步骤:
.grep({ .value.HOW.^name eq 'Perl6::Metamodel::ClassHOW' })
【讨论】: