我无法将 OCaml 中的数组与修改隔离开来
I'm not able to isolate Array in OCaml from modifying
Here 是完整代码。我会尝试展示一些作品。我正在编写一个通过 telnet 工作的井字游戏服务器。这是游戏板的代表
let empty_board = [|
[|EMPTY; EMPTY; EMPTY|];
[|EMPTY; EMPTY; EMPTY|];
[|EMPTY; EMPTY; EMPTY|]|]
它只被 Array.copy
使用过一次,用于在游戏循环中传递玩家描述符和新棋盘:
let prepare_game_process pair_of_players=
pair_of_players >>= fun (player1, player2) ->
send_to_client player1 "You play for X";
send_to_client player2 "You play for O";
let new_board = Array.copy empty_board in
game_loop player1 player2 new_board
但每次新游戏开始时,game_loop 中的所有更改都会反映到原始 empty_board:
let make_move x y board token=
board.(y).(x) <- token;
board
我看了十亿次代码,但我根本看不出原因。
您只复制了外部数组,而不是单个行数组。
Here 是完整代码。我会尝试展示一些作品。我正在编写一个通过 telnet 工作的井字游戏服务器。这是游戏板的代表
let empty_board = [|
[|EMPTY; EMPTY; EMPTY|];
[|EMPTY; EMPTY; EMPTY|];
[|EMPTY; EMPTY; EMPTY|]|]
它只被 Array.copy
使用过一次,用于在游戏循环中传递玩家描述符和新棋盘:
let prepare_game_process pair_of_players=
pair_of_players >>= fun (player1, player2) ->
send_to_client player1 "You play for X";
send_to_client player2 "You play for O";
let new_board = Array.copy empty_board in
game_loop player1 player2 new_board
但每次新游戏开始时,game_loop 中的所有更改都会反映到原始 empty_board:
let make_move x y board token=
board.(y).(x) <- token;
board
我看了十亿次代码,但我根本看不出原因。
您只复制了外部数组,而不是单个行数组。