我正在使用不同操作系统的多个不同版本的Perl(全部5.8+)。我无法在各种机器上管理模块,这导致我使用Class :: Std和基础编译指示的组合来促进OO Perl和继承。
我想在构造子类对象时设置我的基类的必需属性。另外,我想这样做而不明确指定发送到我的子类的参数中的值,因为它对于给定子类的所有对象都是相同的。
以下代码(后面跟一个问题)说明了这种情况:
我的基类:
package Person;
use Class::Std;
# class data
my %person_title :ATTR( name => "title" );
my %person_name :ATTR( name => "name" );
1;
我的子类:
package Doctor;
use Class::Std;
# set inheritance
use base 'Person';
# class data
my %doctor_specialty :ATTR( name => "specialty" );
1;
我的脚本(目前失败,“人员缺少初始化标签:'标题'”):
use strict;
use warnings;
use Doctor;
my %args = (
"name" => "John Smith",
"specialty" => "Dentist",
);
Doctor->new(\%args);
当我创建Doctor对象时,我总是希望'title'是'Dr.'。如何实现这一目标?