요약:
위의 답변은 베타 3까지 사실입니다 (향후 릴리스에서 다시 변경 될 수 있음).
Slice는 이제 배열처럼 작동하지만 @matt가 위에서 말했듯이 변경이 이루어질 때까지 사실상 내부 배열에 대한 얕은 복사본입니다. 슬라이스 (현재)는 원래 값의 스냅 샷을보고,
또한 슬라이스 구문이 변경되었습니다.
[from..upToButNotIncluding] -> [from..<upToButNotIncluding]
예:
var arr = ["hello", "world", "goodbye"]
var arrCopy = arr
let slice = arr[0..<2]
arr[0] = "bonjour"
arr
arrCopy
slice
이것은 파이썬 스타일 목록 처리를 수행하는 것이 더 간단하기 때문에 (IMHO) 훨씬 더 균일 한 처리를 허용합니다. 하나의 목록을 필터링하여 다른 목록을 만듭니다. Beta 3 이전의 Matt의 답변에 따라 슬라이스를 매핑하려면 임시 배열을 만들어야했습니다. 이제 새 코드가 더 간단 해졌습니다.
class NameNumber {
var name:String = ""
var number:Int = 0
init (name:String, number:Int) {
self.name = name
self.number = number
}
}
var number = 1
let names = ["Alan", "Bob", "Cory", "David"]
let foo = names[0..<2].map { n in NameNumber(name:n, number:number++) }
foo
(공평하기는하지만, foo는 여전히 슬라이스입니다)
참고:
http://adcdownload.apple.com//Developer_Tools/xcode_6_beta_3_lpw27r/xcode_6_beta_3_release_notes__.pdf
중요한 변경 사항, 해결 된 문제,-Swift Language, 단락 1
"Swift의 배열은 Dictionary 및 String ... m과 같은 완전한 값 의미를 갖도록 완전히 재 설계되었습니다."