首页 > 解决方案 > 如何发现 Perl 6 类型的所有角色?

问题描述

我可以检查一个类型是否具有.does我已经知道的角色。我想获取角色列表。继承有.^mro,但我没有看到元模型中的角色有类似的东西。

除此之外,给定一个“类型”,我如何判断它是定义为类还是角色?

标签: ooprolesrakumetamodel

解决方案


.^roles
say Rat.^roles; # ((Rational[Int,Int]) (Real) (Numeric))

默认情况下,它包括每个角色,包括由其他角色引入的角色。仅获得第一级使用:!transitive

Rat.^roles(:!transitive); # ((Rational[Int,Int]))

推荐阅读