簡體   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