Как создать неизменяемый массив в 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-07-26):
Этот вопрос относится к самым ранним дням Свифта. С тех пор Swift был обновлен, поэтому неизменяемые массивы на самом деле неизменяемы, как показывают ниже.