您可以转换Range
为Array
.
var arr2 = (0 until arr1.length).toArray
indices
收集返回的方法Range
:
var arr2 = arr1.indices.toArray
如果你有一个数组并想填充它,你可以使用copyToArray
方法:
(0 until arr2.length).copyToArray(arr2)
此方法之间没有性能差异:toArray
由方法实现copyToArray
。
Range
仅包含 3 个Int
字段:和start
,因此几乎没有内存开销。end
step
range
对象中还有方法Array
:
val arr2 = Array.range(0, arr1.length) // contains 0, excludes arr1.length
还有一些其他的方法来填充数组。在这种情况下,这些方法不是很有用。
方法fill
:
var i = -1
val arr2 = Array.fill(arr1.length)({i+=1; i})
方法apply
:
val arr2 = Array.apply(0, (1 until arr1.length): _*) // Array(0) on empty arr1
如果您没有Array
收集并且想要更改其元素并让Array
您可以使用collection.breakOut
方法:
// this is not that case
val arr2: Array[Int] = (0 until arr1.length).map(identity)(breakOut)