使用范围迭代数组

4

This is what I want to do

a = [1, 2, 3, 4]
a[1] = 0
a[2] = 0

一种实现此目的的方法是循环。
(1..2).each { |x| x = 0 }

有没有使用范围或星号之类的方式来实现这一点?就像下面这样:
a[(1..2)] = 0
3个回答

5
a = [1, 2, 3, 4]
a[1..2] = [0] * 2
p a #[1, 0, 0, 4]

如果你在第二行只输入 a[1..2] = 0,数组 a 将会变成 [1, 0, 4],因此这种方式是不正确的。


3
a[1..2] = 0, 0:将数组a的第1到2个元素赋值为0和0。a[1,2] = 0,0:语法错误,应该用a[1..2] = 0, 0。a[1..2] = [0,0]:将数组a的第1到2个元素替换为0和0(等同于a[1..2] = 0, 0)。注意,操作符可以在数组前面添加以将其解包为列表。 - fl00r

2
或者使用 Array#fill 方法。
a.fill(0, 1..2)

1

使用范围

ary = [1, 2, 3, 4]
ary[1..2] = [0,0]

使用 [起始位置,长度]

a = [1,2,3,4]
a[1,2] = [0,0]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接