代码
sub sqrsumfunc {
my $sum; $sum += ($_) * ($_) for @_; $sum;
}
我尝试用逐元素乘法及其求和来代替
use strict;
use warnings;
use List::Util qw(sum);
my @x = @{ $_[0] };
my $Sxx = sum( @x * @x );
但实际结果有很多偏差。
如何用Perl标准函数替换第一个函数?
答案 0 :(得分:3)
您的第二块代码不是作为子例程编写的,因此没有private class UpdateProgressBar extends AsyncTask<Void, Integer, Void> { // Integer progress type
数组可供使用,@_
将无效。它也与第一个块不同,因为它期望引用到一个值数组,而第一个子例程只是将值列表作为参数。
主要问题是你正在写
my @x = @{ $_[0] }
对数组的 size 进行平方。你需要的是
my $Sxx = sum( @x * @x );
或者,如果您愿意
my $sum_xx = sum map $_ * $_, @x;
这是同一构造的不同语法