如何在迭代时更改数组的元素部分

时间:2016-03-16 14:57:20

标签: ruby

数组xs由0到9之间的数字组成:

xs = [*0..9]

测试奇偶校验,并将结果存储到位:

xs.map!(&:odd?)
puts xs.join(" ") 
# => false, true, ..., true

xs按预期更改。但我只是想改变数组的一部分

xs[5..-1].map!(&:odd?)
puts xs.join(" ")
# => 0 1 2 3 4 5 6 7 8 9

我想slice操作会返回一个副本。或者其他一些原因。

xs[...] = xs[...].some_operation是一个解决方案,但如果没有分配,有没有办法做到这一点?

1 个答案:

答案 0 :(得分:8)

这是一种方法:

xs.fill(5..-1) { |i| xs[i].odd? }
#=> 0 1 2 3 4 true false true false true