按Perl中的列表求和

时间:2015-05-03 21:21:47

标签: perl list

代码

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标准函数替换第一个函数?

1 个答案:

答案 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;

这是同一构造的不同语法