2

質問はかなり漠然としていますが、説明するスペースが光を当てるのに役立つことを願っています.

基本的に、イテレータ $x がその配列にある値をスキップするために使用しようとしている配列 @cluster があります。配列のサイズはさまざまであるため、残念ながらすべてのケースに適合する if ステートメントを作成することはできません。

通常、スカラー値でこれを行う必要がある場合は、次のようにします。

for my $x (0 .. $numLines){
    if($x != $value){
        ...
    }
}

何かアドバイス?

4

3 に答える 3

7

できるよ:

my @cluster = (1,3,4,7);
outer: for my $x (0 .. 10){
    $x eq $_ and next outer for @cluster;
    print $x, "\n";
}

Perl 5.10 では、次のこともできます。

for my $x (0 .. 10){
    next if $x ~~ @cluster;
    print $x, "\n";
}

またはハッシュを使用する方が良い:

my @cluster = (1,3,4,7);
my %cluster = map {$_, 1} @cluster;
for my $x (0 .. 10){
    next if $cluster{$x};
    print $x, "\n";
}
于 2013-04-24T03:44:41.223 に答える
1

あなたはそのようなことを意味しますか:

for my $x (0 .. $numLines){
    my $is_not_in_claster = 1;
    for( @claster ){
         if( $x == $_ ){
             $is_not_in_claster = 0;
             last;
         }
    }
    if( $is_not_in_claster ){
        ...
    }
}

?

于 2013-04-24T03:43:41.833 に答える