41

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.

kiritsuku
  • 52,967
  • 18
  • 114
  • 136
noncom
  • 4,962
  • 3
  • 42
  • 70

2 Answers2

81
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)
Sergey Passichenko
  • 6,920
  • 1
  • 28
  • 29
  • 8
    If the contents of the Array dont matter you can also use new instead of fill: `val chars = new Array[Char](256)` – MxFr Feb 23 '12 at 13:14
43

Use Array.ofDim[Char](256).

See API docs here.

missingfaktor
  • 90,905
  • 62
  • 285
  • 365