【发布时间】:2016-07-09 15:38:35
【问题描述】:
我正在编写一个简单的 Perl 模块来处理时间和日期信息。下面是构造函数和访问器方法之一的简化版本:
package Time;
# Constructor
sub new {
my $class = shift;
my %args = @_;
# Create an empty object
my $self = bless {};
# Get input arguments
my $second = exists $args{'second'} ? $args{'second'} : (localtime)[0];
# Use the accessor to validate and populate object data
$self->second($second);
return $self;
}
# Second accessor
sub second {
my $self = shift;
my $second = shift;
# Input validation
if (defined $second) {
if ($second =~ m{^\d+$} && $second >= 0 && $second <= 59) {
$self->{'second'} = $second;
}
else {
die "'second' must be an integer between 0 and 59!";
}
}
return $self->{'second'};
}
我的问题是...... 在 Perl 的对象构造中使用访问器是否可以接受?
在构造函数内部使用访问器使得我不需要构造函数本身中的所有验证代码,因为输入由访问器验证,但这是不好的做法吗?
有什么理由我不想这样做吗?
【问题讨论】:
-
Perl 没有构造函数的概念。
new和其他方法一样只是一个静态方法。
标签: perl oop constructor accessor