繁体   English   中英

按Perl中的列表求和

[英]Sum Squares by lists in Perl

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

你的第二块代码不是作为子程序编写的,因此没有@_数组可供使用,而my @x = @{ $_[0] }将无效。 它也与第一个块不同,因为它期望引用一个值数组,而第一个子例程只需要一个值列表作为参数。

主要问题是你在写作

my $Sxx = sum( @x * @x );

它正方形的数组大小 你需要的是什么

my $sum_xx = sum map $_ * $_, @x;

或者,如果您愿意

my $sum_xx = sum map { $_ * $_ } @x;

这只是同一构造的不同语法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM