2012-08-15 49 views
1

我想用一行来初始化一组数组元素相同的值。我知道我可以使用for循环,但是我想知道是否有一种更简单的方法来实现它。例如,我有一个零数组。我想4初始化元素,以9为1。我认为做这样的事情的,如何在Perl中为一组数组元素赋值?

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

回答

4

为什么不使用数组切片?

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

这比splicemap更容易理解和更清晰。

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

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;