Swiftの配列は値型
Swift勉強中です。まだまだ卵にすらなってません。
驚いたのはSwiftの配列は値型だということです。とにかくなんだそれはって感じ。。
import UIKit
var ary = [1, 2, 3, 4, 5]
var cpy = ary
cpy[0] = 6
print(ary[0], cpy[0]) // 1, 6
Swiftの配列のコピーって楽でいいですね。本当にあっさりwってじゃあ関数とかの引数で配列使っても丸々コピーされるってこと?頭おかしんじゃね?C言語をイメージしてると怒りしか感じない。。
色々調べたら心配なしってことがわかった。内部的には必要な時と場所にしかコピーが発生しないみたい。(上の例ではcpy[0]の再代入でコピーが必要になってくるよね)
結論といたしまして、Swiftの配列を他の変数に代入するということはコピーが発生するかもしれない同じ配列を定義しますよ。メモリの効率とかは気にしないでね。ってことかな?