如果我们没有new()命名构造函数,如何在perl中创建实例

时间:2014-04-21 11:02:20

标签: perl

我在想new()构造函数。我们知道我们可以提供任何名称。一般来说我们都喜欢这个..

package PP;
sub new
{
    my $class = shift;
    my $self = {
        _first => shift,
        _last  => shift,
        _st       => shift,
    };

    print "First Name is $self->{_first}\n";
    print "Last Name is $self->{_last}\n";
    print "ST is $self->{_st}\n";
    bless $self, $class;
    return $self;
}

在致电时,我们按以下方式行事:

$object = new PP( "Mohan", "Sohan", 223345);

所以我们在这里使用new,因为我们有构造函数名'new()'但是如果构造函数名称为少()(而不是new())我们将如何处理它。是这样的吗?

$object = few PP( "Mohan", "Sohan", 223345);

1 个答案:

答案 0 :(得分:4)

new没有什么特别之处。 (bless是真正构造对象的东西。)所以

$object = few PP( "Mohan", "Sohan", 223345);

相当于

$object = new PP( "Mohan", "Sohan", 223345);

间接方法调用会导致混淆错误,因此通常建议使用以下方法

$object = PP->new( "Mohan", "Sohan", 223345);

$object = PP->few( "Mohan", "Sohan", 223345);