Perl在现代Perl中定义类

示例

尽管可用,但在现代Perl中不建议从头开始定义类。使用提供更多功能和便利的辅助OO系统之一。这些系统包括:

  • Moose -受Perl 6 OO设计启发

  • Class::Accessor -驼鹿的轻巧替代品

  • Class::Tiny -真正的最小类建造者

驼鹿

package Foo;
use Moose;

has bar => (is => 'ro');                 # a read-only property
has baz => (is => 'rw', isa => 'Bool');  # a read-write boolean property

sub qux {
    my $self = shift;
    my $barIsBaz = $self->bar eq 'baz';  # property getter
    $self->baz($barIsBaz);               # property setter
}

类别::存取器(Moose语法)

package Foo;
use Class::Accessor 'antlers';

has bar => (is => 'ro');                 # a read-only property
has baz => (is => 'rw', isa => 'Bool');  # a read-write property (only 'is' supported, the type is ignored)

Class :: Accessor(本机语法)

package Foo;
use base qw(Class::Accessor);

Foo->mk_accessors(qw(bar baz));  # some read-write properties
Foo->mk_accessors(qw(qux));      # a read-only property

类别::细小

package Foo;
use Class::Tiny qw(bar baz);  # just props