【问题标题】:Scala create array of empty arraysScala创建空数组数组
【发布时间】:2016-01-19 15:35:49
【问题描述】:

我正在尝试创建一个数组,其中每个元素都是一个空数组。 我试过这个:

var result = Array.fill[Array[Int]](Array.empty[Int])

看了How to create and use a multi-dimensional array in Scala?这里之后,我也试过这个:

var result = Array.ofDim[Array[Int]](Array.empty[Int])

但是,这些都不起作用。

如何创建一个空数组?

【问题讨论】:

    标签: scala


    【解决方案1】:

    你在这里误会Array.ofDim。它根据要保存的值的维度和类型创建一个多维数组。

    要创建一个由 100 个数组组成的数组,每个数组为空(0 个元素)并保存 Ints,您只需将这些维度指定为 ofDim 函数的参数。

    val result = Array.ofDim[Int](100, 0)
    

    【讨论】:

    • 顺便说一句,我已经将result 变成了val,因为我强烈怀疑它是否需要修改(这将涉及完全替换数组数组,而不仅仅是修改子数组的内容)。
    【解决方案2】:

    Array.fill 有两个参数:第一个是长度,第二个是填充数组的值,更准确地说,第二个参数是元素计算,将被多次调用以获得数组元素(感谢@ alexey-romanov 指出了这一点)。但是,在您的情况下,它始终会产生相同的值,即空数组。

    Array.fill[Array[Int]](length)(Array.empty)
    

    【讨论】:

    • 小心:第二个参数不是一个值,而是一个计算,它产生一个值并且会为每个元素调用。文档中给出的示例是 Array.fill(3){ math.random },它给出了 3 个不同的随机值。
    【解决方案3】:

    也考虑Array.tabulate如下,

    val result = Array.tabulate(100)(_ => Array[Int]())
    

    其中 lambda 函数被应用100 次,每次它提供一个空数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 2023-03-23
      • 2021-06-11
      • 2012-10-09
      • 2014-01-09
      相关资源
      最近更新 更多