0

重複の可能性:
Perl配列に特定の値が含まれているかどうかを確認するにはどうすればよいですか?

2つの配列と1つ@array1 = (1..26);@array2 = ('a'..'z');変数があります$x。次に$x=5、この値を2つの配列と比較し、この変数が属することを出力に示すにはどうすればよい@array1でしょうか。

4

3 に答える 3

5

Perl 5.10以降には、このタスクを簡単に実行できる新しいスマートマッチ演算子があります。

if ($x ~~ @array1) {
  say '$x is in @array1';
}
elsif ($x ~~ @array2) {
  say '$x is in @array2';
}
else {
  say '$x is not in either array.';
}
于 2012-11-01T10:40:46.837 に答える
3

あなたはsmartmatchを使うことができます:

say   $x ~~ \@array1 ? 'first'
    : $x ~~ \@array2 ? 'second'
    : 'none';
于 2012-11-01T10:37:16.657 に答える
2

物議を醸しているスマートマッチ演算子を避けたい場合は、を使用できますgrep

say   grep { $x eq $_ } @array1 ? "first"
    : grep { $x eq $_ } @array2 ? "second"
    : "none";

これを繰り返し行う場合は、ここでハッシュを使用する必要があります。

my %array1 = map { $_ => 1 } @array1;
my %array2 = map { $_ => 1 } @array2;

say   $array1{$x} ? "first"
    : $array2{$x} ? "second"
    : "none";
于 2012-11-01T10:53:36.880 に答える