【问题标题】:Creating an Array2D in F# (VS2010 Beta 1)在 F# 中创建 Array2D(VS2010 Beta 1)
【发布时间】:2010-11-09 07:31:22
【问题描述】:

考虑 VS2010 Beta 1 中的以下代码片段:

让数组 = Array2D.zeroCreate 1000 500

这会产生一个错误,即:

错误 FS0030:值限制。值“数组”已被推断为 泛型 val 数组:'_a [,] 将“数组”定义为一个简单的数据项,使其成为具有显式的函数 参数,或者,如果您不希望它是通用的,请添加类型注释。

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

【问题讨论】:

    标签: arrays f# multidimensional-array


    【解决方案1】:

    您可以像这样显式指定类型:

    let array : string [,] = Array2D.zeroCreate 1000 500
    

    有关值限制的更多信息,您可能需要查看this F#-Wiki page

    【讨论】:

      【解决方案2】:

      您也可以使用 init 创建一个数组,虽然它可能会更慢。

      let array = Array2D.init 1000 500 (fun _ _ -> "")
      

      在函数式编程中通常不会看到将数组归零。将初始化函数传递给 init 并使用您想要的值创建数组更为常见。

      【讨论】:

        【解决方案3】:

        创建一个包含空字符串的二维数组:

        let array = Array2D.create 1000 500 ""
        

        【讨论】:

          猜你喜欢
          • 2015-08-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-26
          • 2018-11-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多