如何在Perl中为一组数组元素赋值?

时间:2012-08-15 20:05:23

标签: arrays perl

我想用一行初始化一组数组元素相同的值。我知道我可以使用for循环,但我想知道是否有更简单的方法来实现它。

例如,我有一个零数组。我想将元素4到9初始化为1.我会想到做类似的事情,

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

2 个答案:

答案 0 :(得分:5)

一种方法:

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;

答案 1 :(得分:4)

为什么不使用数组切片?

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

这比splice更容易理解,比map更清晰。

我们使用列表[3..8]而不是提供单个索引。我们必须将sigil调整为@,因为我们需要一个列表上下文。