您可以转换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,因此几乎没有内存开销。endstep
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)