我需要在F#中声明一个带有2个参数(row,col)的函数,并返回一个2维的Option数组(将所有元素初始化为none),但我不知道正确的语法。我尝试过类似的东西:
type T =
{
....//my type
}
let create2DArrayOfT (row : int , col: int) Array2D<Option<T>> = Array2D.init<Option<T>> 10 10 (fun -> None)
上面的签名在指定返回类型时是错误的。 所以我有两个问题:
答案 0 :(得分:4)
在F#中写入'a [,]
的2D数组的类型。下一次,您可以通过查看Array2D
模块中的函数类型,使用F#interactive找到它:
> Array2D.create;;
val it : (int -> int -> 'a -> 'a [,]) = <fun:clo@4>
答案 1 :(得分:3)
您不需要指定返回类型,因为它将通过类型推断推断出来。 只需使用:
type T = {Name : string}
let create2DArrayOfT (row : int , col: int) = Array2D.init<Option<T>> 10 10 (fun _ _ -> None)
<强>更新强>
如果要指定返回类型,请使用:
let create2DArrayOfT (row : int , col: int) : Option<T> [,] = Array2D.init<Option<T>> 10 10 (fun _ _ -> None)
答案 2 :(得分:1)
let create2DArrayOfT<'T> (row : int , col: int) : 'T option [,] = Array2D.init<'T option> row col (fun _ _ -> None)
注释遗漏
let create2DArrayOfT<'T> (row, col) = Array2D.init<'T option> row col (fun _ _ ->None)
用法:
let a = create2DArrayOfT<T>(2,3)