By Alvin Alexander. Last updated: July 5, 2022
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.