単一の行を使用して、配列要素のグループを同じ値で初期化したい。forループを使用できることは知っていますが、もっと簡単な方法があるかどうか知りたいです。
たとえば、ゼロの配列があります。そして、要素4から9を1として初期化したいのですが、次のようなことを考えます。
my @array = (0) x 10;
for my $i (3 .. 8) {
$array[$i] = 1;
}
配列スライスを使用してみませんか?
@array = (0) x 10;
@array[3..8] = (1) x 6; # or something > 6
これは、よりも理解しやすくsplice
、より明確ですmap
。
単一のインデックスを提供する代わりに、リストを使用します[3..8]
。@
リストコンテキストが必要なため、印章をに調整する必要があります。
1つのアプローチ:
my @array = (0) x 3, (1) x 6, 0;
別のアプローチ:
my @array = map { $_ >= 3 && $_ <= 8 ? 1 : 0 } (0 .. 9);
または、すでにに設定@array
していて、値の範囲を次(0) x 10
のように設定するためのワンライナーを探している場合。1
splice @array, 3, 6, (1) x 6;