php - @_ -1 在 Perl 中是什么意思?

标签 php perl arrays

我正在尝试将 Perl 脚本转换为 PHP,但我在处理一些 Perl 方面遇到了麻烦。例如,@_ -1 是什么意思?我该如何用 PHP 编写它?

整个函数如下:

sub variance {
    my $sum = sum_squares (@_);
    my $deg = @_ - 1;
    return $sum/$deg;
}

好了,所有的子程序如下:

sub mean { # mean of values in an array
  my $sum = 0 ;
  foreach my $x (@_) {
    $sum += $x ;
  }
  return $sum/@_ ;
}

sub sum_squares { # sum of square differences from the mean
  my $mean = mean (@_) ;
  my $sum_squares = 0 ;
  foreach my $x (@_) {
    $sum_squares += ($x - $mean) ** 2 ;
  }
  return $sum_squares ;
}

sub variance { # variance of values in an array
  my $sum_squares = sum_squares (@_) ;
  my $deg_freedom = @_ - 1 ;
  return $sum_squares/$deg_freedom ;
}

sub median { # median of values in an array
  my @sorted = sort {$a <=> $b} (@_) ;
  if (1 == @sorted % 2) # Odd number of elements
    {return $sorted[($#sorted)/2]}
  else                   # Even number of elements
    {return ($sorted[($#sorted-1)/2]+$sorted[($#sorted+1)/2]) / 2}
}

sub histogram { # Counts of elements in an array
  my %histogram = () ;
  foreach my $value (@_) {$histogram{$value}++}
  return (%histogram) ;
}

请耐心等待,因为这是我第一次使用 Perl。据我所见(测试),在这种情况下正确的答案是 David Dorward 的答案。关于这组子程序,我确实有另一个问题 here .

最佳答案

在这种情况下,@_ 是作为列表传递给子例程的参数。

在标量上下文中,它是该列表中元素的数量。

因此,如果您调用:variance('a', 'b', 'c', 'd');$deg 将为 3。

关于php - @_ -1 在 Perl 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2352866/

相关文章:

php - 使用 mysql_results 创建变量名

javascript - 如何仅在需要时处理 ajax 请求,而不是每次都处理

java - 合并排序中的子数组大小

javascript - 使用 lodash 3 将对象转换为对象数组

c - 使用 scanf 分配指针的 char 数组

javascript - FullCalendar - 根据事件标准每天显示图标

php - 防止产品页面中的可点击图片,禁用产品图片链接

perl - 为什么要在出路时重构 Unicode (NFC)?

regex - Perl:如何用它的值替换变量

perl - 如何在同一列上过滤具有 2 个条件的 Perl DBIx 记录集?