這是一個面向對象Perl的問題。我應該設計一個模塊:
1)存儲值
2)計算總計,平均值,計數。
我應該在面向對象的Perl中找到一個涉及方法覆蓋或多態或繼承的代碼。模塊上的Perl - 繼承,多態
我的代碼是這樣的:
package Stats;
use strict;
use warnings;
sub new {
my $class = @_;
my $self = {};
bless $self, $class;
$self->clear();
return $self;
}
sub clear {
my $self = $_[0];
$self->{'numlist'} = undef;
$self->{'x_sum'} = 0;
$self->{'x2_sum'} = 0;
}
sub addValue {
my $self = $_[0];
my $num = $_[1];
if (defined $num) {
push @{$self->{'numlist'}}, $num;
$self->{'x_sum'} += $num;
$self->{'x2_sum'} += $num**2;
}
}
sub getTotal {
my $self = $_[0];
return $self->{'x_sum'};
}
sub getMean {
my $self = $_[0];
my @numlist = @{$self->{'numlist'}};
if ([email protected]) { return 0; }
return $self->getTotal()/@numlist;
}
sub getValueList {
my $self = $_[0];
return @{$self->{'numlist'}};
}
1;
sub results {
my $obj = new Stats(13,4,56,43,33);
print "Number of values: ", scalar($obj->getValueList()), "\n";
print "Total: ", $obj->getTotal(), "\n";
print "Mean: ", $obj->getMean(), "\n";
}
我要去哪裏錯了?
您是否使用嚴格的'和使用警告?這將幫助你解決一些問題... – amon
如果這是一個家庭作業問題,它應該被標記爲 – gcbenison
@gcbenison錯誤,作業標記爲[*棄用*](http://meta.stackexchange.com/questions/ 147100/-Homework-tag-is-now-official-deprecated?cb = 1) – amon