【发布时间】:2010-05-25 19:34:20
【问题描述】:
试图掌握在 Perl 中使用 OOP 的窍门。我的问题是我在类中设置了一个变量,但是当我尝试检索它时该值丢失了。我确定这个问题很明显,但我需要一些额外的眼睛。
构造函数:
sub new
{
my ($class, $name) = @_;
my $self = {
_name => $name,
_times => []
};
bless ($self, $class);
return $self;
}
访问器/修改器方法:
sub times {
my ($self) = shift;
if (@_) { @{$self->{_times}} = shift }
print "times size: " . @{$self->{_times}} . "\n";
return @{$self->{_times}};
}
从主程序调用:
$js->addRun($duration, $curStartTime);
print "Times size: " . @{$js->times()} . "\n";
addRun() 子程序的相关代码:
sub addRun {
my ($self, $duration, $runDateTime) = @_;
if (!defined($duration) || !defined($runDateTime)) { return 0; }
push(@{$self->{_times}},$duration);
}
当我运行此代码时,它进入 addRun 子例程并将值推送到 _times 变量。然后我通过调用访问器/修改器来打印该值。但是访问器/修改器有自己的打印命令,所以我可以在返回之前检查它的值。
访问器打印正确的值,但是当我打印返回的值时,它是未定义的。我的语法在某处搞砸了吗?我只是个白痴吗?
谢谢
【问题讨论】:
-
您是否尝试在对象上使用 Data::Dumper 来查看该值是否真的被保存了?
标签: perl