Можно ли ограничить размер массива в Scala?

В Java byte[] st = new byte[4096] подразумевается, что размер массива st не будет превышать 4096 байт.

Эквивалент Scala равен st:Array[byte] = Array(), где размер неизвестен. Если я читаю огромный массив в этот массив, то как я могу ограничить размер массива?

Будет ли какой-либо побочный эффект, если мне не нужен размер для вышеуказанной операции?

Ответ 1

var buffer = new Array[Byte](4 * 1024)

Работает нормально, и он ведет себя так, как ожидалось.

Ответ 2

Пример Java не создает массив с верхней границей его размера, он создает массив с точно указанным размером, который фиксируется на протяжении всего его жизненного цикла. Массивы Scala идентичны в этом отношении. Кроме того, это:

val st: Array[Byte] = Array()

выделяет массив байтов ( "байт" в Java) длины 0.

Что касается чтения файла в массив, если вы должны обработать весь файл, тогда попытайтесь выделить требуемое пространство, и если он сбой, вы не можете продолжить.