Ruby 2D数组行为奇怪

Ruby 2D数组行为奇怪,ruby,arrays,multidimensional-array,Ruby,Arrays,Multidimensional Array,我正在尝试用Ruby制作一个生活游戏,目前为止我有以下代码: class Board def initialize(size) @board = [["-"] * size] * size @board[2][2] = "#" end def to_s @board.map{|r| r.map{|i| print (i ? i.to_s : " ") + " "} puts } end end puts Board.ne

我正在尝试用Ruby制作一个生活游戏,目前为止我有以下代码:

class Board
  def initialize(size)
    @board = [["-"] * size] * size
    @board[2][2] = "#"
  end
  def to_s
    @board.map{|r| 
      r.map{|i| print (i ? i.to_s : " ") + " "}
      puts
    }
  end
end

puts Board.new(5)
我预计结果如下:

- - - - - 
- - - - - 
- - # - - 
- - - - - 
- - - - -
但它却显示了这一点:

- - # - - 
- - # - - 
- - # - - 
- - # - - 
- - # - -

我不知道为什么,我非常感谢你的帮助。

没关系,我找到了答案。我应该用的

@board = Array.new(size) { Array.new(size, "-") }
而不是

@board = [["-"] * size] * size