在F#中创建Array2D(VS2010 Beta 1)

时间:2009-07-09 08:53:44

标签: arrays f# multidimensional-array

考虑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.

我可以显式设置类型(在我的例子中是一个字符串网格)?

3 个答案:

答案 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 ""