小编Ant*_*rks的帖子

Perl中@_数组使用移位函数的问题

希望在shift函数@_内部的数组上使用该函数,以便该函数可以接受可变数量的参数。根据 L Wall 等人在“Programming Perl”中的 p112,传递给子例程的参数被连接成一个平面数组,即@_。假设可以使用shift函数或foreach循环遍历此数组以确定传递的所有值中的最小值,即使某些参数本身就是数组并且这些值作为元素包含在这些数组中。

尝试了许多变体,并且 min2 和 min4 变体使用“for each”循环(最接近“Programming Perl”的 p113 上的循环)来遍历 @_ 数组。使用“shift”函数遍历@_ 数组的 min1 和 min3 变体确实正常工作。关于是什么导致基于“shift”功能的变体失败的任何想法?

下面给出了四个“min”子程序:

# Using perl5.14.2.exe 

use strict;

sub min {
    my $m=shift @_;
    my $b;
    while ($b = shift @_){
      if ($b < $m) {$m=$b};
    };
    return $m;
};


sub min_v2 {
    my $m = $_[0];
    foreach (@_){
      if ($_ < $m) {$m = $_};
    };
    return $m;
};


sub min_v3 …
Run Code Online (Sandbox Code Playgroud)

arrays perl foreach for-loop shift

2
推荐指数
1
解决办法
141
查看次数

标签 统计

arrays ×1

for-loop ×1

foreach ×1

perl ×1

shift ×1