我可以在Scala中限制数组的大小吗?

时间:2010-02-09 02:22:45

标签: scala arrays size

在Java byte[] st = new byte[4096]中,暗示数组st的大小不会超过4096字节。

Scala等效值为st:Array[byte] = Array(),其中大小未知。如果我正在读取一个巨大的文件到这个数组,那我怎么能限制数组的大小?

如果我不关心上述操作的大小,会不会有副作用?

3 个答案:

答案 0 :(得分:28)

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

工作得很好,它表现得像预期的那样。

答案 1 :(得分:9)

您的Java示例不会生成一个上限大小的数组,它会生成一个精确指定大小的数组,该数组在整个生命周期内都是固定的。 Scala阵列在这方面是相同的。另外,这个:

val st: Array[Byte] = Array()

分配长度为0的Byte(Java中的“byte”)数组。

就将文件读入数组而言,如果必须处理整个文件,则尝试分配所需的空间,如果失败,则无法继续。

答案 2 :(得分:0)

如果你迟到了:

val buffer = new Array.ofDim[Byte](4 * 1024)