Подтвердить что ты не робот

Scala - создание типа параметризованного массива заданной длины

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

val chars = Array[Char](256)

все нормально. Но если я это сделаю:

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

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

4b9b3361

Ответ 1

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)

Ответ 2

Используйте Array.ofDim[Char](256).

Кроме того, это помогает найти API-документы перед отправкой вашего вопроса в stackoverflow.