红宝石内置方法从单尺寸阵列创建多维阵列
问题描述:
如果我有这样一个数组:[0, 1, 2, 3, 4, 5]
,是否有内置的方法来创建此: [[0, 1, 2], [3, 4, 5]]
给定的宽度3?如果没有内置的方法,我该如何改进?红宝石内置方法从单尺寸阵列创建多维阵列
def multi_to_single(array, width)
return [].tap{|md_array|
(array.length.to_f/width).ceil.times {|y|
row = (array[(y*width), width])
md_array.push(row + Array.new(width - row.length))
}
}
end
我觉得我错过了一些明显的东西,因为我还没有编程一段时间的红宝石! 在此先感谢,埃尔。
编辑:它需要在核心库,所以没有轨道上的红宝石或任何东西。
答
我认为这是你在找什么:
[1,2,3,4,5,6].each_slice(3).to_a #=> [[1, 2, 3], [4, 5, 6]]
使用Ruby 1.9.2p136(2010-12-25修订30365)
这同样也是in_groups_of的实现方式。 – Alkaline 2012-01-15 13:02:49