我想现在从[22,22]到[3,3]手动切片和修改数组。
我正在
[nil,3,nil]
输出以下代码
def boom(array)
array.map!.each_slice(2) do |a|
a[0] = 3
a[1] = 3
a[2] = 3
end
array
end
p boom([22,22, 22])
不确定为什么[1]被替换但现在是[0]和[2]
答案 0 :(得分:0)
从您的评论中,您似乎想要以3个元素的块来修改原始数组; map!.with_index
允许您使用模数来确定您所处的位置:
def boom(array)
array.map!.with_index do |el, idx|
if idx % 3 == 0
3
elsif idx % 3 == 1
4
else
5
end
end
array
end
boom([22, 22, 22]) #=> [3, 4, 5]
显然,无论你想要什么,只需要3,4和5。
答案 1 :(得分:-2)
试试这个:
def dynamic_value(a)
# do something with a
end
def boom(array)
array.map! do |a|
dynamic_value(a)
end
array
end
p boom([22, 22, 22])