面向对象的Perl脚本

时间:2014-02-06 07:47:16

标签: perl oop

sub new
{
    my $class = shift; #off the first element
    my $self = { };
    bless $self, $class;
    return $self;
}

有人可以解释一下吗?以下三行代码有什么用?

my $self = { };
    bless $self, $class;
    return $self;

1 个答案:

答案 0 :(得分:6)

  1. my $self = { };创建anonymous hash reference并将其存储在the lexical variable $ self。

  2. bless $self, $class;告诉Perl $ self不仅仅是任何引用,而且实际上是存储在$ class中的类的对象。见bless in perldocbless $x, $y返回$ x,子例程总是返回最后执行的语句的值,除非用return语句明确说明,所以下一行是可选的,但有利于提高可读性。

  3. return $self;将$ self(我们的特殊对象引用)中的值传递回调用函数。请参阅return in perldoc

  4. 编辑:

    澄清一下,如果您没有bless您的参考,您将无法在其上调用方法。使用bless告诉Perl,“从现在开始,将$ self中的引用与$ class中的类相关联,以便我可以在引用中使用该类中的方法。”