我正在使用 perl 5.16。
我有以下函式可以給我任何給定陣列中的平均值:
sub GetAvgValue {
my @Array = @_;
my $Sum = 0;
foreach my $CurVal (@Array) {
$Sum = $CurVal;
}
if ( scalar(@Array) ) {
return $Sum / scalar(@Array);
}
else {
return undef;
}
}
我希望它undef在陣列中沒有元素時回傳,而是回傳一個看起來隨機的整數:
print Dumper GetAvgValue([]);
# 1. iteration: $VAR1 = '42311136';
# 2. iteration: $VAR1 = '38006240';
# 3. iteration: $VAR1 = '39394784';
uj5u.com熱心網友回復:
[]是一個陣列參考。您沒有在代碼中使用陣列參考。因此,這個子呼叫是錯誤的:
GetAvgValue([]);
引數串列@_現在不是空的,它包含一個值:一個陣列參考。你應該做的是:
GetAvgValue();
發送一個空串列。因為您在子例程中分配陣列,如下所示:
my @Array = @_;
如果您使用的是像 is 這樣的陣列參考[],您將這樣做:
my $aref = shift; # or
my $aref = $_[0]; # or
my ($aref, @rest) = @_; # etc
my @Array = @$aref; # dereference
末尾的“隨機值”是陣列參考的數字地址,除以 1。演示:
$ perl -lwe'print []'
ARRAY(0x79a7d0)
$ perl -lwe'print []/1'
15443920
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/513631.html
標籤:perl
下一篇:在perl中使用變數呼叫sed
