如何在同一个类Perl中使用类的实例

时间:2014-08-02 23:21:50

标签: perl perl-module

我是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";
    }
}

1 个答案:

答案 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中创建无法访问的私有方法,但绝大多数代码只是信任调用代码来做正确的事情。