创建对象
与许多其他语言不同,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;
}
通常,任何引用都可以是对象,甚至是标量引用。但大多数情况下,哈希是表示对象数据最方便的方式。