Instance Property インスタンスプロパティ

indices

The indices that are valid for subscripting the collection, in ascending order. コレクションの添え字に使うのに有効である、昇順でのインデックス。

Declaration 宣言

var indices: DefaultIndices<Dictionary<Key, Value>.Keys> { get }

Discussion 解説

A collection’s indices property can hold a strong reference to the collection itself, causing the collection to be non-uniquely referenced. If you mutate the collection while iterating over its indices, a strong reference can cause an unexpected copy of the collection. To avoid the unexpected copy, use the index(after:) method starting with startIndex to produce indices instead. あるコレクションのindicesプロパティは、そのコレクション自身に対する強い参照を保持でき、そのコレクションが特有にでなくとも参照されるようにします。あなたがコレクションをそれのインデックス全体に反復している間に変化させるならば、ある強い参照はそのコレクションの予期されない複製の原因となります。予期されないコピーを避けるために、代わりにindex(after:)メソッドを使ってstartIndexで始めることで、インデックスを生成してください。


var c = MyFancyCollection([10, 20, 30, 40, 50])
var i = c.startIndex
while i != c.endIndex {
    c[i] /= 5
    i = c.index(after: i)
}
// c == MyFancyCollection([2, 4, 6, 8, 10])