F#2d数组索引错误

F#2d数组索引错误,f#,F#,下面的代码给出了错误运算符“expr.[idx]”已被用于基于此程序点之前的信息的不确定类型的对象。考虑添加其他类型约束< /代码>。我想我已经告诉它了。怎么了 let board = Array2D.init 30 30 (fun x y -> 0) let tickCell x y board : int[,] = match board with |board when board.[x].[y] = 0-> 1 |board when board

下面的代码给出了错误
运算符“expr.[idx]”已被用于基于此程序点之前的信息的不确定类型的对象。考虑添加其他类型约束< /代码>。我想我已经告诉它了。怎么了

let board = Array2D.init 30 30 (fun x y -> 0)

let tickCell x y board : int[,]  =
    match board  with
    |board when board.[x].[y] = 0-> 1
    |board when board.[x].[y] = 1-> 0
    | _ -> -1

let board2 = Array2D.init 30 30 (fun x y -> tickCell x y board)

这些小的更改应该可以消除错误:

  • 参数和类型包装在括号中
  • 使用
    [x,y]

    let tickCell x y (board : int[,])  =
        match board  with
        |board when board.[x,y] = 0-> 1
        |board when board.[x,y] = 1-> 0
        | _ -> -1
    

  • 注意,对于原始语法,类型注释是针对
    tickCell
    函数的返回类型,而不是
    board
    参数的类型。