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