Scala - создание типа параметризованного массива заданной длины
Если в Scala IDE попробуйте выполнить следующее:
val chars = Array[Char](256)
все нормально. Но если я это сделаю:
val len = 256
val chars = Array[Char](len)
он говорит, что он ожидает Char
вместо len
? Зачем? Я ожидаю, что поведение будет таким же! Почему он думает, что я хочу поместить эту вещь в массив вместо указания размера? Насколько мне известно, конструктор для массивов не содержит конструктора, который принимает один аргумент, чтобы поместить его внутри массива.
Ответы
Ответ 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.