Swift let
を使用してNSMutableArrayを作成しました。mutableArrayにaddObjectを追加すると、let
を使用して定数を割り当てても追加されます。 。let
がどのように迅速に機能するかを誰かが説明できますか?後で値を追加できない場合、次のコードはどのように機能しますか?
let arr : NSMutableArray = [1,2,3,4,5]
arr.addObject(6)
println(arr)
免責事項:この回答はNSタイプのデータ構造にのみ適用されます。全体像については@EricDの回答を参照してください。
let
をクラスとともに使用すると、変数を別の配列などに変更できないことを意味します。配列を編集可能にしたくない場合は、可変ではなく通常のNSArrayを使用してください
let arr : NSMutableArray = [1,2,3,4,5]
arr = [1,2,3,4,5] //error trying to assign to a let variable that has already been assigned
arr.addObject(6) //fine because we are not changing what is assigned to arr, but we are allowed to change the object that is assigned to arr itself
定数変数とは何かについてのあなたの理解は少し厳しすぎると思います。
クラスは参照型であり、NSMutableArrayはクラスです。
FoundationのNSMutableArrayはSwiftの配列とは異なります。後者は値型です。
定数NSMutableArrayを作成する場合:
let ns: NSMutableArray = ["a", "b"]
その後、これは機能します:
ns.addObject("c")
しかし、これはしません:
ns = ["d", "e"] // nope!
参照の内容は変更できますが、定数に割り当てられている内容は変更できないためです。
一方、Swiftの配列では:
let sw: [String] = ["a", "b"]
定数は参照ではなく値であるため、変更できません。
sw.append("c") // nope!
Doc: 構造と列挙は値型です および クラスは参照型です