Ruby实例数组,修改属性

时间:2016-03-22 16:32:40

标签: arrays ruby

我试图在ruby中编写一个数独求解器,但我遇到了一个问题。请考虑以下代码:

@grid = Array.new(9,Array.new(9,Cell.new))

其中Cell定义为:

class Cell
    def initialize
        @value = 0
        @possibles = Array (1..9)
    end

    attr_accessor :value, :possibles
end

当我初始化我的9x9 @grid 2D数组时,它会打印出值

0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0

这是我的期望。但是,当我尝试运行类似@grid[5][5].value = 7的内容时,@grid会打印出值

7 7 7 7 7 7 7 7 7
7 7 7 7 7 7 7 7 7
7 7 7 7 7 7 7 7 7
7 7 7 7 7 7 7 7 7
7 7 7 7 7 7 7 7 7
7 7 7 7 7 7 7 7 7
7 7 7 7 7 7 7 7 7
7 7 7 7 7 7 7 7 7
7 7 7 7 7 7 7 7 7

我意识到我的9x9 @grid 2D数组充满了Cell相同的实例

创建唯一实例的2D数组的语法是什么,以便我可以单独操作它们?

1 个答案:

答案 0 :(得分:4)

您需要使用块

@grid = Array.new(9) { Array.new(9) { Cell.new } }