ref 用法如下:
text
ref EXPR
ref如果 EXPR 是一个引用,那么 ref 操作符返回一个真值,否则返回一个假。返回的值取决于该引用 所引用的东西的类型。内建的类型包括:
SCALAR
ARRAY
HASH
CODE
GLOB
REF
LVALUE
IO::Handle
如果这个引用的对象已经包含到了一个包中,那么返回的就是该包的名字。你可以把 ref 当作一种 “类型是”操作符。
perl
if (ref($r) eq "HASH") {
print "r is a reference to a hash.\n";
}
elsif (ref($r) eq "Hump") { # 烦人——见下文
print "r is a reference to a Hump object.\n"
}
elsif (not ref $r) {
print "r is not a reference at all.\n";
}我们认为测试你的对象的类名字是否等于任意特定的类名字是非常糟糕的 OO 风格,因为一个派生 类会有不同的名字,但是应该允许访问基类的方法。这种情况最好用下面的 UNIVERSAL 方法:
perl
if ($r->isa("Hump") ){
print "r is a reference to a Hump object, or subclass.\n"
}
评论
0评论加载中…