未初始化的字节数组是 Scala

Uninitialized byte array is Scala

ByteArrayOutputStream

中有这样一段代码
buf = new byte[size];

你能在 Scala 中做同样的事情,而不浪费时间对每个元素进行不必要的初始化吗?

Scala 等效项:

val buf = new Array[Byte](size)

一种方法是使用同伴对象的 .ofDim 方法:

scala> val buf = Array.ofDim[Byte](10)
buf: Array[Byte] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

code behind it 与@Nyavro 的回答相同,因此他的解决方案实际上跳过了一个电话)。


.ofDim 可能有用的一个实例是创建多维数组(最多五个维度):

scala> val buf = Array.ofDim[Byte](5, 5)
buf: Array[Array[Byte]] = Array(Array(0, 0, 0, 0, 0), Array(0, 0, 0, 0, 0), Array(0, 0, 0, 0, 0), Array(0, 0, 0, 0, 0), Array(0, 0, 0, 0, 0))

Array companion object 包含其他有用的创建数组的方法(例如 .fill.tabulate 方法)