在this question in StackOverflow中,我发现了Type.^roles
,其中包括组成一个类型的所有角色。它可以在所有地方使用,但是如果某个地方有NQP角色,则无法打印:
say Cursor.^roles# OUTPUT: «No such method 'gist' for invocant of type 'NQPMatchRole'. Did you mean 'ast'? in block <unit> »
没有方法gist
或Str
。但是,^name
似乎可以工作:
my @cursor-roles = Cursor.^roles; print $_.^name for @cursor-roles ; # OUTPUT: «NQPMatchRole»
我是否可以假设NQP角色遵循与Perl 6相同的元模型,并且我至少可以使用^name
?是否有一种更通用的方式来打印所有角色,包括Perl 6和NQP角色?