Trong Perl5 và Moose, isa tuyến tính hoặc isa tuyến tính giúp hiểu rõ về phân cấp lớp.Làm thế nào để bạn hiển thị thứ bậc kiểu của một giá trị?
Phương pháp WHAT cho thấy các loại bê tông của một giá trị:
> 42.WHAT
(Int)
Làm thế nào để hiển thị một cái gì đó giống như
> 42.hypothetical-type-hierarchy
(Int) ┬ is (Cool) ─ is (Any) ─ is (Mu)
└ does (Real) ─ does (Numeric)
... có thể với dòng thêm cho mỗi vai trò tiêu thụ?
chỉnh sửa: ví dụ với hai sợi vai trò
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_ bất cứ điều gì, nó cung cấp cho bạn đối tượng kiểu. Mà cho các loại mà không có bất kỳ '::' trong chúng '.gist' vào một cái gì đó nửa chừng hợp lý. Bạn thực sự nên gọi '.^Name'. –