创建对象

与许多其他语言不同,Perl 没有为你的对象分配内存的构造函数。相反,应该编写一个类方法,它既可以创建数据结构,也可以使用数据填充它(你可能将其视为工厂方法设计模式)。

package Point;
use strict;

sub new {
    my ($class, $x, $y) = @_;
    my $self = { x => $x, y => $y }; # store object data in a hash
    bless $self, $class;             # bind the hash to the class
    return $self;
}

该方法可以使用如下:

my $point = Point->new(1, 2.5);

每当箭头运算符 -> 与方法一起使用时,其左操作数将被添加到给定的参数列表中。因此,new 中的 @_ 将包含值 ('Point', 1, 2.5)

名称 new 没有什么特别之处。你可以根据需要调用工厂方法。

哈希没有什么特别之处。你可以通过以下方式执行相同操作:

package Point;
use strict;

sub new {
    my ($class, @coord) = @_;
    my $self = \@coord;
    bless $self, $class;
    return $self;
}

通常,任何引用都可以是对象,甚至是标量引用。但大多数情况下,哈希是表示对象数据最方便的方式。