1
可以說我有以下包層次:Perl的對象體系內省
A--> B --> C --> D
這意味着A
是基類,並從它B
繼承反過來從乙C
繼承等。
也可以說我有下面的代碼行:
my $co = D->new();
有沒有什麼辦法來檢查(一些UNIVERSAL
方法?)如果對象co
是爲A
的後裔? (或者一般來說,爲了測試對象X
是否是包P
的後代)
可以說我有以下包層次:Perl的對象體系內省
A--> B --> C --> D
這意味着A
是基類,並從它B
繼承反過來從乙C
繼承等。
也可以說我有下面的代碼行:
my $co = D->new();
有沒有什麼辦法來檢查(一些UNIVERSAL
方法?)如果對象co
是爲A
的後裔? (或者一般來說,爲了測試對象X
是否是包P
的後代)
請參閱UNIVERSAL。
if ($D->isa('A')) {print "do something fancy"}
或
if ($D->can('method_defined_in_A')) {print "can do that";}
+1提'can'。使用'isa'通常意味着你做錯了什麼。 – ikegami