使用范围迭代数组

时间:2011-09-29 16:47:27

标签: ruby arrays

这就是我想做的事情

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

执行此操作的一种方法是循环

(1..2).each { |x| x = 0 }

有没有办法用范围或splats以某种方式做到这一点?

之类的东西
a[(1..2)] = 0

3 个答案:

答案 0 :(得分:5)

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

您不能只在第2行输入a[1..2] = 0,因为数组a将变为[1, 0, 4]

答案 1 :(得分:2)

或者,Array#fill

a.fill(0, 1..2)

答案 2 :(得分:1)

有范围

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

使用[start,length]

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