Ruby:从多维数组中选择与给定块匹配的元素

Ruby:从多维数组中选择与给定块匹配的元素,ruby,multidimensional-array,Ruby,Multidimensional Array,我正在用Ruby构建一个国际象棋程序,我的正方形对象是多维数组 Square类的示例代码: 我的Board类中的代码: 当我尝试在@Square_数组中选择一个正方形对象,该对象与一个条件相匹配,例如坐标为a4的正方形。我曾尝试使用select调用嵌套的each_with_index,但这不起作用。我只能选择数组本身,而不能选择数组中的对象。最好的方法是什么 我看到许多人为了做这类事情而构建嵌套数组,遇到了使用嵌套数组所产生的各种问题。显而易见的解决方案是:去掉嵌套数组,使用平面数组 如果我要做

我正在用Ruby构建一个国际象棋程序,我的正方形对象是多维数组

Square类的示例代码: 我的Board类中的代码:
当我尝试在@Square_数组中选择一个正方形对象,该对象与一个条件相匹配,例如坐标为a4的正方形。我曾尝试使用select调用嵌套的each_with_index,但这不起作用。我只能选择数组本身,而不能选择数组中的对象。最好的方法是什么

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

如果我要做这样的编程,我将使用平面数组,并使用数组索引和模运算Fixnum%对列执行行/列操作,Fixnum/对行执行


但是在你的例子中,你似乎在为每个正方形保存列号和行号,甚至坐标名称,所以你更容易使用以行-列组合或坐标名称为键的平面散列。

我看到很多人为了做这种事情而构建嵌套数组,遇到因使用嵌套数组而导致的各种问题。显而易见的解决方案是:去掉嵌套数组,使用平面数组

如果我要做这样的编程,我将使用平面数组,并使用数组索引和模运算Fixnum%对列执行行/列操作,Fixnum/对行执行


但在您的情况下,似乎要为每个正方形保存列号和行号,甚至是坐标名称,因此更容易使用以行-列组合或坐标名称为键的平面散列。

创建一些以正方形为值的示例,并解释您到底想要实现什么?仅供参考:在Ruby中,你不必用java或C++的方式来预先创建数组。此代码将非常好-arr=[];arr[10]=Hi;PARAREGIN是一些用方值表示的例子,解释你想实现什么?FIY:在Ruby中,你不必用java或C++的方式预先创建数组。此代码将非常好-arr=[];arr[10]=Hi;p最初我实际上有一个平面阵列,但将其改为2d阵列,因为我认为这更像OO板是8x8网格,而不是64个空间,并且当我想要显示板时会更容易。但是,您是对的,因为除了坐标名称之外,我还跟踪x和y值,所以从长远来看,将其移回平面可能更容易array@scobo你认为国际象棋棋盘中的一行在撇开列的情况下被建模为一个对象有什么现实/意义吗?我不这么认为。最初我实际上有一个平面阵列,但将其改为2d阵列,因为我认为它更像OO板是一个8x8网格,而不是64个空间,当我想显示板时会更容易。但是,您是对的,因为除了坐标名称之外,我还跟踪x和y值,所以从长远来看,将其移回平面可能更容易array@scobo你认为国际象棋棋盘中的一行在撇开列的情况下被建模为一个对象有什么现实/意义吗?我不这么认为。
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}}