追記: 定数に代入された配列は真に immutable となるよう変更されたとのこと SwiftのArrayがヤバくなくなった - Qiita
The Swift Programming Language 158ページには、変数に代入された配列は “mutable” で、定数に代入された配列は “immutable” だと書いてある。
Objective-C においては、文字通り mutable なNSMutableArray
は値の書き換えや追加ができる一方、 NSArray
は値を操作することができない。 Objective-C プログラマはそこから類推して、 Swift の immutable な配列も値を操作できないと考えるかもしれないが、それは誤りである。実際には、 Swift の “immutable” な配列は値を書き換えることができる:
let a = [1, 2, 3]
a[0] = 42
a // => [42, 2, 3]
Swift における “immutable” とは、「配列の長さを変えるメソッド(mutating func
で定義されたメソッド)の呼び出しが禁止されている」という意味であることに注意(同じく158ページにそう書いてある)。