数组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
是一个解决方案,但如果没有分配,有没有办法做到这一点?
答案 0 :(得分:8)
这是一种方法:
xs.fill(5..-1) { |i| xs[i].odd? }
#=> 0 1 2 3 4 true false true false true