甲最简单的方法我有一个10到数组转换为2D阵列中的阶
val matrix = for {
r <- 0 until 10
c <- 0 until 10
} yield r + c
并希望将“基质”到Array[Array[Int]]
转换用10行和10列。
最简单的方法是什么?
甲最简单的方法我有一个10到数组转换为2D阵列中的阶
val matrix = for {
r <- 0 until 10
c <- 0 until 10
} yield r + c
并希望将“基质”到Array[Array[Int]]
转换用10行和10列。
最简单的方法是什么?
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))
您显示的代码为您提供了一个Int的矢量,而不是一个数组。如果Vector和它是好的,生成一个新的,你只需要获得两次
val matrix = for (r <- 1 to 10)
yield for(c <- 1 to 10)
yield r+c
如果您需要将现有的矢量转换成数组[数组[INT]]正如你所说,使用分组克里斯 - 马丁建议
matrix.grouped(10).toArray.map(_.toArray)
如果我理解正确的话,你可以这样做:
Array.tabulate(10,10)(_+_)
//> res0: Array[Array[Int]] = Array(Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), ....)
如果你只需要一个10×10阵列[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, ....
编辑..谢谢! – mohit 2014-12-19 07:52:06
for (x <- (0 until 10).toArray) yield (x until x + 10).toArray
'matrix',就像你定义的那样,是一个'Vector [Int]',而不是'Array [Int]'。 – 2014-12-19 07:35:59