2014-12-19 47 views
4

甲最简单的方法我有一个10到数组转换为2D阵列中的阶

val matrix = for { 
    r <- 0 until 10 
    c <- 0 until 10 
} yield r + c 

并希望将“基质”到Array[Array[Int]]转换用10行和10列。

最简单的方法是什么?

+0

'matrix',就像你定义的那样,是一个'Vector [Int]',而不是'Array [Int]'。 – 2014-12-19 07:35:59

回答

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)) 
2

您显示的代码为您提供了一个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) 
7

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

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, .... 
+0

编辑..谢谢! – mohit 2014-12-19 07:52:06

1
for (x <- (0 until 10).toArray) yield (x until x + 10).toArray