如何将二维数组传递给F#中的函数?

Joh*_*hn 4 arrays f# arguments function multidimensional-array

我试图在F#中创建一个函数,它将整数的二维数组(9乘9)作为输入,然后打印其内容.以下代码显示了我所做的事情:

let printMatrix matrix=
    for i in 0 .. 8 do
        for j in 0 .. 8 do
            printf "%d " matrix.[i,j]
        printf "\n"
Run Code Online (Sandbox Code Playgroud)

问题是F#不会自动推断矩阵的类型,并且它给出了以下错误:"运算符'expr.[idx]'已被用作基于此程序点之前的信息的不确定类型的对象.考虑添加其他类型约束".

我尝试在函数的定义中使用类型注释,但我认为我做错了.知道如何克服这个问题吗?

Joh*_*mer 6

将其更改为

let printMatrix (matrix:int [,])=
    for i in 0 .. 8 do
        for j in 0 .. 8 do
            printf "%d " matrix.[i,j]
        printf "\n"
Run Code Online (Sandbox Code Playgroud)

这是由于F#类型的infrence算法的工作原理