我有几个要放入 nil 的数组,以便根据我使用数组的方式,我的索引将进一步放入数组中。有没有更快、更高效、更优雅的方式?
(1..@epgroup_overide_count.to_i).each do
@grp['Overides'].unshift(nil)
@grp['channel_overides'].unshift(nil)
end
#unshift
需要一个 splatted arg 列表来添加多个元素,所以:
@group['Overides'].unshift(*([nil]*@epgroup_override_count.to_i))
这样就可以了(第二个类似)
分解一个衬里:
[nil] * @epgroup_override_count.to_i
将一个数组乘以一个数字会多次复制该数组,但作为一个单一的平面数组 ( [1,2,3]*3 #=> [1,2,3,1,2,3,1,2,3]
)。要注意的一件事是,如果数组具有变量引用,它会创建对同一对象的多个引用,而不是重复的。
*(above_multiplied_array)
使用 splat 运算符将数组传播到方法的 args 中
arr.unshift(multiple, args, here)
通过使用 splat 运算符,我们将数组扩展为多个 args 到#unshift
. 当#unshift
给定多个参数时,它将所有参数添加到数组中,这是所需的结果。
您可以执行以下操作:
@grp['Overides'] +=([nil]*@epgroup_override_count.to_i).flatten
@grp['channel_overides'] += ([nil]*@epgroup_override_count.to_i).flatten
or
nil_array = ([nil]*@epgroup_override_count.to_i).flatten
@grp['Overides'] += nil_array
@grp['channel_overides'] += nil_array