Из этого вопроса в 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?