利用Class::MethodMaker可以有效避免重新写很多getter和setter的代码,具体如下:
package Animal;
use Class::MethodMaker
new_with_init => 'new',
get_set => [ -eiffel => [qw(color height name age)]],
abstract => [qw(sound)],
;
sub init {
my $self = shift;
$self->set_color($self->default_color);
}
sub named {
my $self = shift->new;
$self->set_name(shift);
$self;
}
sub speak {
my $self = shift;
print $self->name, ' goes ', $self->sound, "\n";
}
sub eat {
my $self = shift;
my $food = shift;
print $self->name, " eats $food\n";
}
sub default_color {
'brown';
}
生成函数new会调用init函数,eiffel中为需要创建的setter和getter对象
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24104518/viewspace-722907/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24104518/viewspace-722907/