Scala - creating a type parametrized array of specified length

noncom picture noncom · Feb 23, 2012 · Viewed 37.6k times · Source

If in Scala IDE try the following:

val chars = Array[Char](256)

it is all fine. But if I do this:

val len = 256
val chars = Array[Char](len)

it says that it expects a Char instead of len? Why? I expect the behavior to be the same! Why does it think that I want to put that thing in the array instead of specifying it's size? As far as I know, there is no constructor for arrays that takes a single argument to place it inside the array.

Answer

Sergey Passichenko picture Sergey Passichenko · Feb 23, 2012
val chars = Array[Char](256)

This works because 256 treated as a Char and it creates one-element array (with code 256)

val len = 256
val chars = Array[Char](len)

Here len is Int, so it fails

To create array of specified size you need something like this

val chars = Array.fill(256){0}

where {0} is a function to produce elements

If the contents of the Array don't matter you can also use new instead of fill:

val chars = new Array[Char](256)