Scala - создание параметризованного массива заданной длины - PullRequest
33 голосов
/ 23 февраля 2012

Если в Scala IDE попробуйте следующее:

val chars = Array[Char](256)

все хорошо. Но если я сделаю это:

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

он говорит, что ожидает Char вместо len? Зачем? Я ожидаю, что поведение будет таким же! Почему он думает, что я хочу поместить эту вещь в массив вместо указания ее размера? Насколько я знаю, не существует конструктора для массивов, который принимает один аргумент для помещения его в массив.

Ответы [ 2 ]

62 голосов
/ 23 февраля 2012
val chars = Array[Char](256)

Это работает, потому что 256 рассматривается как Char, и он создает массив из одного элемента (с кодом 256)

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

Здесь len равно Int, поэтому он не может

Чтобы создать массив указанного размера, вам нужно что-то вроде этого

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

, где {0} - это функция для создания элементов

Если содержимое массива не имеет значения для вастакже можно использовать new вместо fill:

val chars = new Array[Char](256)
29 голосов
/ 23 февраля 2012

Использование Array.ofDim[Char](256).

См. API документы здесь.

...