Array から継承するクラスがあります (実際には、多次元配列の単なるマスクです)。to_a
そのメソッドをオーバーライドしたい:
def to_a
self.each.with_index { |el, i| el.map {|j| j} }
end
しかし、これは物事を台無しにします:私が自分の機能をテストしようとすると:
it 'should be non destructive' do
a_board = Representation.new(@a_size)
a_clean_board = Representation.new(@a_size)
expect(a_board).to eq(a_clean_board)
# Try to modify a_board
arr = a_board.to_a
arr.pop
a_board.to_a.pop
# Check that it stayed equal to a_clean_board
expect(a_board).to eq(a_clean_board)
end
両方の呼び出しpop
で、元のボードに副作用が生じます。
どうすればこれを回避できますか?