En Perl5 et Moose, linéaire isa ou linéarisé isa permet de donner un sens aux hiérarchies de classes.Comment afficher la hiérarchie de type d'une valeur?
La méthode WHAT indique le type de béton d'une valeur:
> 42.WHAT
(Int)
Comment puis-je montrer quelque chose comme
> 42.hypothetical-type-hierarchy
(Int) ┬ is (Cool) ─ is (Any) ─ is (Mu)
└ does (Real) ─ does (Numeric)
... peut-être avec des lignes supplémentaires pour chaque rôle consommé?
edit: par exemple avec deux brins de rôles
class Beta {}
role Delta {}
role Gamma does Delta {}
role Eta {}
role Zeta does Eta {}
role Epsilon does Zeta {}
class Alpha is Beta does Gamma does Epsilon {}
# (Alpha) ┬ is (Beta)
# ├ does (Gamma) ─ does (Delta)
# └ does (Epsilon) ─ does (Zeta) ─ does (Eta)
my $ai = Alpha.new
$ai.^mro # ((Alpha) (Beta) (Any) (Mu))
$ai.^roles # ((Epsilon) (Zeta) (Eta) (Gamma) (Delta))
# flat list, not two-element list of a tuple and triple‽
'.WHAT' doesn 't _show_ anything, il vous donne l'objet type. Ce qui pour les types qui n'ont pas de '::' dans '' .gist' dans quelque chose de raisonnable. Vous devriez vraiment appeler '.^Nom'. –