Могу ли я ограничить размер массива в Scala? - PullRequest
10 голосов
/ 09 февраля 2010

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

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

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

Ответы [ 2 ]

28 голосов
/ 09 февраля 2010
var buffer = new Array[Byte](4 * 1024)

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

9 голосов
/ 09 февраля 2010

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

val st: Array[Byte] = Array()

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...