var absences = [0, 2, 0, 4, 0, 3, 1, 0]
let midpoint = absences.count/2
var firstHalf = absences.prefix(upTo: midpoint)
let secondHalf = absences.suffix(from: midpoint)
報價:突變ArraySlice會實例化一個新的數組實例嗎?從蘋果
無論是firstHalf也不secondHalf片分配自己的任何新的存儲。相反,每個呈現缺席陣列的存儲視圖。
當我嘗試變異firstHalf
如下所示:
firstHalf[1] = 19
的firstHalf
變化的值,但原始數組absences
保持相同(firstHalf[1]
等於19而absences[1]
等於2) 所以在後臺發生了什麼。我是否通過改變數組切片來實例化新數組? 在此先感謝。
很可能由斯威夫特集合,在那裏,直到你嘗試變異它不會複製集合在幕後採用的典型的寫入時複製行爲。有關寫入時複製的討論,請參閱WWDC 2015視頻[使用值類型構建更好的應用](https://developer.apple.com/videos/play/wwdc2015/414/)。 – Rob
這也是我腦海中浮現的東西。我只是想確定一下。感謝您的快速響應。 – Pink