在scala中将数组转换为2d数组的最简单方法

bou*_*eli 5 arrays scala

我有一个10×10 Array[Int]

val matrix = for {
    r <- 0 until 10
    c <- 0 until 10
} yield r + c  
Run Code Online (Sandbox Code Playgroud)

并希望将"矩阵"转换为Array[Array[Int]]10行10列.

最简单的方法是什么?

Chr*_*tin 11

val matrix = (for {
    r <- 0 until 3
    c <- 0 until 3
} yield r + c).toArray
// Array(0, 1, 2, 1, 2, 3, 2, 3, 4)

scala> matrix.grouped(3).toArray
// Array(Array(0, 1, 2), Array(1, 2, 3), Array(2, 3, 4))
Run Code Online (Sandbox Code Playgroud)


moh*_*hit 7

如果我理解正确,你可以这样做:

Array.tabulate(10,10)(_+_)               
//> res0: Array[Array[Int]] = Array(Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), ....)
Run Code Online (Sandbox Code Playgroud)

如果您只需要一个没有任何值的10 x 10 Array [Int],

Array.ofDim[Int](10,10)

/> res1: Array[Array[Int]] = Array(Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Array(0
                                              //| , 0, 0, 0, 0, 0, 0, 0, 0, 0), Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Array(0, ....
Run Code Online (Sandbox Code Playgroud)