2010-03-04 38 views
39

Làm cách nào để tạo một mảng gồm nhiều thứ nguyên?Cách tạo và sử dụng mảng đa chiều trong Scala?

Ví dụ, tôi muốn một số nguyên hoặc ma trận kép, giống như double[][] trong Java.

Tôi biết thực tế là các mảng đã thay đổi trong Scala 2.8 và các mảng cũ không được chấp nhận, nhưng có nhiều cách để thực hiện ngay bây giờ và nếu có, tốt nhất là gì?

Trả lời

59

Giống như vậy:

scala> Array.ofDim[Double](2, 2, 2) 
res2: Array[Array[Array[Double]]] = Array(Array(Array(0.0, 0.0), Array(0.0, 0.0)), Array(Array(0.0, 0.0), Array(0.0, 0.0))) 

scala> {val (x, y) = (2, 3); Array.tabulate(x, y)((x, y) => x + y)} 
res3: Array[Array[Int]] = Array(Array(0, 1, 2), Array(1, 2, 3)) 
+0

Rất đẹp – Felix

+2

là 'Array [Array [Int]] 'tương đương với' int [] [] 'trong Java (và nhanh chóng!)? vì tôi đã nghe những tin đồn xấu xa khác http://stackoverflow.com/questions/6090684 –

14

Nó phản đối. phương pháp Companion đối tượng nhà máy xuất khẩu ofDim:

val cube = Array.ofDim[Float](8, 8, 8)