Ruby:从多维数组中选择与给定块

时间:2015-12-03 14:04:54

标签: ruby multidimensional-array

我正在用Ruby构建一个Chess程序,我的Square对象是一个多维数组。

Square类的示例代码:

class Square
  attr_accessor :piece_on_square, :x, :y, :coordinates
  def initialize(piece_on_square=nil, x=nil, y=nil, coordinates=nil)
    @piece_on_square = piece_on_square
    @x = x
    @y = y
    @coordinates = coordinates
  end
end 

我的董事会成员中的代码:

@square_array = Array.new(8){Array.new(8){Square.new}}

当我尝试在@square_array中选择与条件匹配的Square对象(例如coordinates "a4"的方格时,问题出现了。我尝试使用嵌套#each_with_index调用#select,但这不起作用。我只能选择数组本身,而不是数组中的对象。最好的方法是什么?

1 个答案:

答案 0 :(得分:3)

我看到许多人为了做这种事情而构建嵌套数组,遇到了因使用嵌套数组而产生的各种问题。显而易见的解决方案是:摆脱嵌套数组,并使用平面数组

如果我要进行这样的编程,我会使用一个平面数组,并使用数组索引和模运算进行行/列操作(Fixnum#%用于列,Fixnum#/用于行。< / p>

但是在你的情况下,你似乎是为每个方块保存了列号和行号,甚至是坐标名,所以你更容易使用一个平面哈希与行列组合或坐标名称作为键