考虑VS2010 Beta 1中的以下代码片段:
let array = Array2D.zeroCreate 1000 500
这会产生错误,即:
error FS0030: Value restriction. The value 'array' has been inferred to have generic type val array : '_a [,] Either define 'array' as a simple data term, make it a function with explicit arguments or, if you do not intend for it to be generic, add a type annotation.
我可以显式设置类型(在我的例子中是一个字符串网格)?
答案 0 :(得分:6)
您可以明确指定类似的类型:
let array : string [,] = Array2D.zeroCreate 1000 500
有关价值限制的更多信息,您可能需要查看this F#-Wiki page。
答案 1 :(得分:3)
您也可以使用init创建一个数组,虽然它可能会更慢。
let array = Array2D.init 1000 500 (fun _ _ -> "")
通常在函数式编程中看不到数组的归零。将initilization函数传递给init并使用所需的值创建数组更为常见。
答案 2 :(得分:1)
创建包含空字符串的二维数组:
let array = Array2D.create 1000 500 ""