Perl 高级对象主题与模块导出器详解
1. 测试对象的良好行为
1.1 UNIVERSAL 包的实用方法
在 Perl 中, UNIVERSAL 包不仅为我们提供了一个放置通用方法的地方,还预加载了两个非常有用的实用方法: DOES 和 can 。由于 UNIVERSAL 定义了这些方法,所有对象都可以使用它们。
1.1.1 DOES 方法
DOES 方法从 v5.10 版本开始可用。在该版本之前,我们可以使用 isa 方法来实现类似的功能,但 isa 方法仅测试继承关系。 DOES 方法用于测试给定的类或实例是否提供了某种行为(即角色)。
例如,继续以之前章节中的 Animal 家族为例:
use v5.10;
if (Horse->DOES('Animal')) { # does Horse do Animal?
print "A Horse is an Animal.\n";
}
my $tv_horse = Horse->named("Mr. Ed");
if ($tv_horse->DOES('Animal')) { # is it an Animal?
print $tv_horse->name, " is an Animal.\n";
超级会员免费看
订阅专栏 解锁全文
2

被折叠的 条评论
为什么被折叠?



