假设我有一个数组:
array = [6, 6, 6, 4, 4, 6, 4, 4]
我还有另一个字符串数组:
quadrant = ["upper_left", "upper_right", "lower_left", "lower_right"]
我有一个 8 x 8 二维数组,由 nil 或 Checker 对象组成的板位置(@board)。
我的目标是创建一个这样的哈希:
hash = { "upper_left" => @board[array[0]][array[1]] ,
"upper_right" => @board[array[2]][array[3]] ,
"lower_left" => @board[array[4]][array[5]] ,
"lower_left" => @board[array[6]][array[7]] }
我有以下代码:
jump_positions = {}
QUADRANTS.each do |quad|
array.each_slice(2) do |coord|
jump_positions[quad] = @board[coord[0]][coord[1]]
end
然后是测试:
it "should assign board locations as adjacent positions and deliver that info as a whole" do
@bs.board = board.create_board
x_coord = 3
y_coord = 1
jump_assignments = @bs.assign_adjacent_positions(x_coord, y_coord)
jump_assignments["upper_left"].class.should == nil
jump_assignments["upper_right"].class.should == nil
jump_assignments["lower_left"].class.should == Checker
jump_assignments["lower_right"].class.should == Checker
end
失败,因为所有分配都属于“Checker”类,结果它们都是相同的“Checker”对象。我知道它这样做是因为循环是嵌套的,所以所有的“四”键都被初始化到最后一个板位置。
有没有一种方法可以在一次传递中将值分配给具有“数组”中的值的键,以便正确分配它们?这个问题还有意义吗?