I just noticed this quirk when trying to create an array of characters with the Scala Array.range method:
# works as expected ('a' to 'e').toArray // Array[Char] = Array(a, b, c, d, e) # surprise: Array.range always returns Array[Int] val a = Array.range('a', 'e') // Array[Int] = Array(97, 98, 99, 100)
I was surprised to see that the Scaladoc for the Array object states that the second example is expected behavior; Array.range always returns an
Array[Int]. I suspect this has something to do with a Scala
Array being backed by a Java
array, but I didn’t dig into the source code to confirm this.
For much more information about arrays, see my Scala Array class examples tutorial.