LoginSignup
12
12

More than 5 years have passed since last update.

Swift の配列は “immutable” でも値を書き換えられる(追記:仕様変更された)

Last updated at Posted at 2014-06-13

追記: 定数に代入された配列は真に 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ページにそう書いてある)。

12
12
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12