Scala - creating a type parametrized array of spec

2020-05-24 19:49发布

问题:

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.

回答1:

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)


回答2:

Use Array.ofDim[Char](256).

See API docs here.