Perl 面向对象的new函数以及bless的理解
这算是Perl OOP编程的构造函数
----------------------------------------------
package xxx;
...
sub new {
my $class = shift();
my $self = {};
bless $self, $class;
return $self;
}
...
1;
----------------------------------------------
更简短的构造函数如下
sub new {
my $self = bless { };
return $self;
}
在package的sub里面,shift函数返回的值第一个是隐含变量,是类名,所以my $class = shift();成功地将类名赋予$class变量。
bless的格式是bless $object, $class;
bless的第一个参数一般是一个哈希空引用,此处省略my $self = {};直接写bless {}也可。
bless的第二个参数如果省略,就表示当前package的名字。
bless意为祝福,推测来自基督教语境或神话,既法师为object祝福,object就会变为某一class。
法师对着object吹口气,object就可以变成骑士,也可以将object变成青蛙。
bless是起到对object绑定到某一类的作用。
经过bless后,在调用object的metho的时候perl就知道到哪一个package中查找其method。
浙公网安备 33010602011771号