1

単一の行を使用して、配列要素のグループを同じ値で初期化したい。forループを使用できることは知っていますが、もっと簡単な方法があるかどうか知りたいです。

たとえば、ゼロの配列があります。そして、要素4から9を1として初期化したいのですが、次のようなことを考えます。

my @array = (0) x 10;
for my $i (3 .. 8) {
    $array[$i] = 1;
}
4

2 に答える 2

5

配列スライスを使用してみませんか?

@array = (0) x 10;
@array[3..8] = (1) x 6;   # or something > 6

これは、よりも理解しやすくsplice、より明確ですmap

単一のインデックスを提供する代わりに、リストを使用します[3..8]@リストコンテキストが必要なため、印章をに調整する必要があります。

于 2012-08-15T20:19:40.630 に答える
5

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;
于 2012-08-15T20:10:21.540 に答える