如何在Swift中創建一個不可變數組?你如何在Swift中創建一個不可變數組?
的文檔的閱讀淺表會建議你可以做
let myArray = [1,2,3]
但不幸的是這實際上會產生一個可變的,固定大小的數組。這種可變性創建了沒有料到的混淆和功能變異及其參數通常拼圖:
let outterArray = [myArray, myArray]
outterArray[0][0] = 2000
outterArray //=> [[2000,2,3],[2000,2,3]] surprise!
func notReallyPure(arr:Int[]) ->() { arr[0] = 3000 }
notReallyPure(myArray)
myArray // => [3000,2,3]
比C
如果我想更改的,是最好的選擇也好不到哪去真正把它包起來在NSArray
像這樣:
let immutableArray = NSArray(myArray: [1,2,3])
這似乎很瘋狂。我在這裏錯過了什麼?
更新(2015年7月26日):
從斯威夫特的最早期這個問題的日期。從那以後,Swift被更新了,因此不可變數組實際上是不可變的,如下面的答案所示。
不幸的是,我想你不會錯過什麼。恕我直言,這是Swift的一個不好的功能。 – Michael
我很確定使用一個元組將保證不變性,但我意識到失去了數組的好處 – Jiaaro
我希望比我理解的更聰明的人比這個更好。這看起來很瘋狂。 – algal