首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl中按列表计算的和平方

Perl中按列表计算的和平方
EN

Stack Overflow用户
提问于 2015-05-03 21:21:47
回答 1查看 137关注 0票数 1

代码

代码语言:javascript
复制
sub sqrsumfunc {
    my $sum; $sum += ($_) * ($_) for @_; $sum;
}

我试着用元素乘法来代替它及其求和。

代码语言:javascript
复制
use strict;
use warnings;
use List::Util qw(sum);
my @x = @{ $_[0] };
my $Sxx = sum( @x * @x );

但与实际结果有很大的偏差。

如何用Perl标准函数替换第一个函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-03 21:29:55

您的第二个代码块不是作为子例程编写的,因此没有可以使用的@_数组,而且my @x = @{ $_[0] }也不能工作。它也不同于第一个块,因为它期望一个对值数组的引用,而第一个子例程只将一个值列表作为参数。

主要的问题是你在写

代码语言:javascript
复制
my $Sxx = sum( @x * @x );

它与数组的大小成正比。你需要的是

代码语言:javascript
复制
my $sum_xx = sum map $_ * $_, @x;

或者,如果你愿意

代码语言:javascript
复制
my $sum_xx = sum map { $_ * $_ } @x;

对于相同的构造来说,这只是不同的语法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30019569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档