我试图在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数组的语法是什么,以便我可以单独操作它们?
答案 0 :(得分:4)
您需要使用块
@grid = Array.new(9) { Array.new(9) { Cell.new } }