sub average {
my $uebergeben = (@_);
my $verrechnen = 0;
foreach my $item (@_){
$verrechnen = $item;
}
my $scalardef = $verrechnen;
my $average = $scalardef/$uebergeben;
print "$average\n";
}
my @array = 20;
my @hallo = 10;
average(@array,@hallo);
為什么$verrechnen必須在 foreach 回圈之外創建變數?
為什么$verrechnen = (@_)不可能,為什么$item不在標量環境中?
uj5u.com熱心網友回復:
為什么
$verrechnen必須在 foreach 回圈之外創建變數?
因為您希望它存在的時間比回圈的通過時間更長。
為什么
$verrechnen = (@_)不可能
這是完全有效的語法。
在標量背景關系中計算陣列會回傳其中的元素數,因此這會將元素數添加@_到$verrechnen.
例如,如果您傳遞四個引數,@_將有四個元素,$verrechnen = (@_)并將添加四個到$verrechnen.
當然,這不是你想在這里做的。
為什么
$item不在標量背景關系中?
你為什么還要問這個?$item不是背景關系相關的。它在標量背景關系、串列背景關系和空背景關系中做同樣的事情。
反正$item是用了兩次。
for my $item背景關系的概念對于(因為它不在運算式中)沒有多大意義,所以讓我們忽略這種用法。
另一種用途是 in $verrechnen = $item;,其中根據Scalar vs List Assignment Operator$item在標量背景關系中進行評估。
簡化:
sub average {
my $sum = 0;
$sum = $_ for @_;
return $sum/@_;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/494025.html
上一篇:如何在Perl中僅列印呼叫者函式
