struct Entry { var manyCountArray: [Foo] mutating func update() { ... } } var map: [String: Entry] = ... for item in items { guard var entry = map[item.name] else { continue } entry.update(item) map[item.name] = entry }
↑このパターンって素朴な解釈では map[item.name]
と var entry
で 2つ参照があるから entry.update
の中で manyCountArray
の要素を変更したら配列のコピーが発生しそうだけど、 どうだろう (edited)map[item.name]?.update(item)
こう書けばmodifyなので参照1つなのが表明できるんだけど。 (edited)