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도들의 하반기 조각은 자신의 새로운 스토리지를 할당하지 않습니다. 대신, 각각은 결석 배열의 저장에 대한 견해를 제시합니다.
는 I는 다음과 같은 firstHalf
돌연변이하려고하면 firstHalf
변경
firstHalf[1] = 19
값이지만 원래 배열 absences
는 그대로을 따라서 을 (absences[1]
2로 동일하면서 firstHalf[1]
19와 같다) 백그라운드에서 무슨 일이 일어나는가. 배열 슬라이스를 변경하여 새 배열을 인스턴스화 했습니까? 미리 감사드립니다.
그것은 가능성이 당신이 그것을 돌연변이 시도 할 때까지 컬렉션을 복사하지 않습니다 스위프트 컬렉션에 의해 내부적으로 사용되는 일반적인 쓰기시 복사 행동입니다 . copy-on-write에 대한 설명은 WWDC 2015 비디오 [값 유형이있는 더 나은 앱 만들기] (https://developer.apple.com/videos/play/wwdc2015/414/)를 참조하십시오. – Rob
그건 내 머리에도 터 졌어. 나는 그것에 대해 확신하고 싶다. 빠른 응답을 보내 주셔서 감사합니다. – Pink