1

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

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

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

2 回答 2

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;
于 2012-08-15T20:10:21.540 回答
5

为什么不使用数组切片?

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

这比 a 更容易理解,比 asplice更清晰map

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

于 2012-08-15T20:19:40.630 回答