我有一个指示坐标值的数组,如下所示:
cells = [ [0,0], [0,1] ]
数组中的每个数组都是一个X和Y值。因此,如果我想将其右移,则每个单元格上都是 X+1
。我可以像这样将其表示为一个单元格:
delta = [1,0]
现在,我想做的是将该值合并到每个单元格中,以便每个单元格的 X 值与 delta 值相加,因此在这种情况下,最终输出应该是:
new_cells = [ [1,0], [1,1] ]
这是迄今为止我能想到的最好的,它看起来真的很重:
cells = [[0,0],[0,1]]
delta = [1,0]
cells.each do |cell|
cell[0] = cell[0] + delta[0]
cell[1] = cell[1] + delta[1]
end
# Now cells = [[1,0],[1,1]]
是否有一种更简洁的单行方法可以将数组加到数组链中的每个数组上,或者上述方法是否是该问题的最佳解决方案?
最佳答案
我认为您最好的解决方案是认识到单元格和增量是一种不同的数据类型,如果它不是数组,您可以更清楚地对其进行操作:
Cell = Struct.new(:x, :y) do
def + other
Cell.new(self.x + other.x, self.y + other.y)
end
end
# cells is some array of Cell objects
# delta is some Cell object
cells.map! {|cell| cell + delta}
关于Ruby:组合数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11926011/