相关疑难解决方法(0)

在Scala中初始化2D(多维)数组

通过放置类似的内容,可以很容易地在Java中初始化2D数组(或者实际上是任何多维数组):

int[][] x = new int[][] {
        { 3, 5, 7, },
        { 0, 4, 9, },
        { 1, 8, 6, },
};
Run Code Online (Sandbox Code Playgroud)

它易于阅读,类似于2D矩阵等.

但是我如何在Scala中做到这一点?

最好的我可以想出看起来,更简洁:

val x = Array(
    Array(3, 5, 7),
    Array(0, 4, 9),
    Array(1, 8, 6)
)
Run Code Online (Sandbox Code Playgroud)

我在这里看到的问题:

  • 它一遍又一遍地重复"数组"(比如除了之外还有其他的东西Array)
  • 它需要,在每个Array调用中省略尾随
  • 如果我搞砸了,除了插入一些Array()在阵列的中间,它会好与编译器,但类型x将变得悄无声息Array[Any],而不是Array[Array[Int]]:

    val x = Array(
        Array(3, 5, 7),
        Array(0, 4), 9, // <= OK with compiler, silently ruins x
        Array(1, 8, 6)
    )
    
    Run Code Online (Sandbox Code Playgroud)

    有一个防范它,直接指定类型,但它看起来比在Java中更难过:

    val …
    Run Code Online (Sandbox Code Playgroud)

scala initialization multidimensional-array

25
推荐指数
3
解决办法
2万
查看次数