假设我有一个代表棋盘的值
val board: Vector[Vector[Option[Piece]]] = ...在一些应用移动的功能中,我用表格构造了一个新的板。
Vector.tabulate(8,8)(
(x,y) =>
if (x,y) == (start_x,start_y)
None
else if (x,y) == (end_x,end_y)
board(start_x)(start_y)
else
board(x)(y)
)这段代码段的内存使用是否是常量,因为只有两个单元格被更改?换句话说,数据被重用了吗?
发布于 2014-07-08 13:52:19
不,新的董事会和旧的董事会之间不会有结构性的共享。如果在这个片段之后抛出旧板,内存将是恒定的,但是尽可能多地使用旧板会更有效。尝试:
val piece = board(start_x)(start_y)
val board2 = board.updated(start_x, board(start_x).updated(start_y, None))
val newboard = board2.updated(end_x, board2(end_x).updated(end_y, piece))https://stackoverflow.com/questions/24633033
复制相似问题