不确定这里的问题究竟是什么。我是Elm的新手,所以很容易。
board = [ [ 'P', 'P', ' ' ], [ ' ', ' ', ' ' ], [ ' ', ' ', ' ' ] ]
move = nextBestMove board
nextBestMove : List (List Char) -> Int
nextBestMove gameNode =
let
node =
map fromList gameNode
-- node is now List (Array.Array Char)
currentBoard =
fromList node
-- currentBoard is now Array.Array (Array.Array Char)
row1 =
get 0 currentBoard
-- row1 is now Maybe.Maybe (Array.Array Char)
-- now I want to place an X for the empty value in [ 'P', 'P', ' ' ]
row1NextState =
set 2 'X' row1
... rest of code
我得到的类型不匹配错误是:
The 3rd argument to function `set` is causing a mismatch.
22| set 2 'X' row1
^^^^
Function `set` is expecting the 3rd argument to be:
Array.Array Char
But it is:
Maybe (Array.Array Char)
我不明白为什么因为我现在认为我有一个二维数组,它应该是好的去。我想要做的是获得指向游戏板第一行的指针。所以我想基本上得到[0] [0]所以我可以更新行[ 'P', 'P', ' ' ]
中的空白点
如你所知,get函数吐出Maybe
类型。这意味着我们需要将Maybe
类型转换为Array
类型以在set
中使用它。我们可以在这里使用像withDefault这样的函数。
row1NextState =
set 2 'X' (withDefault (Array.initialize 3 (always ‘X’)) row1)
这使得榆树使用[ 'X', 'X', 'X' ]
以防row1
是Nothing
。