sub new
{
my $class = shift; #off the first element
my $self = { };
bless $self, $class;
return $self;
}
有人可以解释一下吗?以下三行代码有什么用?
my $self = { };
bless $self, $class;
return $self;
答案 0 :(得分:6)
my $self = { };
创建anonymous hash reference并将其存储在the lexical variable $ self。
bless $self, $class;
告诉Perl $ self不仅仅是任何引用,而且实际上是存储在$ class中的类的对象。见bless in perldoc。 bless $x, $y
返回$ x,子例程总是返回最后执行的语句的值,除非用return
语句明确说明,所以下一行是可选的,但有利于提高可读性。
return $self;
将$ self(我们的特殊对象引用)中的值传递回调用函数。请参阅return in perldoc。
编辑:
澄清一下,如果您没有bless
您的参考,您将无法在其上调用方法。使用bless
告诉Perl,“从现在开始,将$ self中的引用与$ class中的类相关联,以便我可以在引用中使用该类中的方法。”