に変換でき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のフィールドしか含まれていないため、メモリのオーバーヘッドはほとんどありません。startendstep
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)