2010-02-09 16 views
10

In Java byte[] st = new byte[4096], implica che la dimensione dell'array st non superi i 4096 byte.Posso limitare la dimensione di un array in Scala?

L'equivalente Scala è st:Array[byte] = Array() dove la dimensione è sconosciuta. Se sto leggendo un file enorme in questo array, come posso limitare la dimensione dell'array?

Ci saranno effetti collaterali se non mi interessa la dimensione dell'operazione sopra descritta?

risposta

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

Funziona bene e si comporta come previsto.

9

L'esempio Java non produce una matrice con un limite superiore alle sue dimensioni, produce una matrice con esattamente la dimensione indicata, che è fissa per tutta la sua durata. Gli array Scala sono identici a questo riguardo. Inoltre, questo:

val st: Array[Byte] = Array() 

alloca un array di byte ("byte" in Java) di lunghezza 0.

Per quanto riguarda la lettura di un file in un array, se si deve elaborare l'intero file, quindi tentare di allocare lo spazio richiesto e se fallisce, non è possibile procedere.

Problemi correlati