我是OOPerl的新手,想知道如何在该类中引用类的实例(即PHP中的$this
),以便我能够调用它的& #34;私人"方法
更清楚地说明:
例如,在PHP中:
class Foo {
public function __construct(){
}
public function doThis(){
$that = $this->doThat(); //How to reference a "private" function in perl that is defined in the same class as the calling function?
return $that;
}
private function doThat(){
return "Hi";
}
}
答案 0 :(得分:2)
Perl方法是普通的子程序,它们希望参数数组@_
的 first 元素成为调用该方法的对象。
定义为
的对象my $object = Class->new
然后可以使用来调用方法,比如
$object->method('p1', 'p2')
习惯名称为$self
,在方法中您将其指定为普通变量,如此
sub method {
my $self = shift;
my ($p1, $p2) = @_;
# Do stuff with $self according to $p1 and $p2
}
因为shift
从@_
中删除了对象,所以剩下的就是方法调用的显式参数,这些参数被复制到本地参数变量。
有很多方法可以在Perl中创建无法访问的私有方法,但绝大多数代码只是信任调用代码来做正确的事情。