It seems like the support for printing arrays is somewhat lacking in Scala. If you print one, you get the default garbage you’d get in Java:
scala> val array = Array.fill(2,2)(0)
array: Array[Array[Int]] = Array(Array(0, 0), Array(0, 0))
scala> println(array)
[[I@d2f01d
Furthermore, you cannot use the Java toString/deepToString methods from the java.util.Arrays class: (or at least I cannot figure it out)
scala> println(java.util.Arrays.deepToString(array))
<console>:7: error: type mismatch;
found : Array[Array[Int]]
required: Array[java.lang.Object]
println(java.util.Arrays.deepToString(array))
The best solution I could find for printing a 2D array is to do the following:
scala> println(array.map(_.mkString(" ")).mkString("\n"))
0 0
0 0
Is there a more idiomatic way of doing this?
In Scala 2.8, you can use the
deepmethod defined on Array, that returns an IndexedSeq cointaining all of the (possibly nested) elements of this array, and call mkString on that:The IndexedSeq returned does have a stringprefix ‘Array’ by default, so I’m not sure whether this gives precisely what you wanted.