Podsumowanie:
Powyższe odpowiedzi były prawdziwe aż do Beta 3 (i mogą ulec zmianie w przyszłych wydaniach)
Slice działa teraz jak tablica, ale jak @matt powiedział powyżej, jest faktycznie płytką kopią do tablicy pod maską, dopóki nie zostanie dokonana zmiana. Plasterki (teraz) wyświetlają migawkę oryginalnych wartości,
Zwróć również uwagę, że składnia wycinka uległa zmianie:
[from..upToButNotIncluding] -> [from..<upToButNotIncluding]
Przykład:
var arr = ["hello", "world", "goodbye"]
var arrCopy = arr
let slice = arr[0..<2]
arr[0] = "bonjour"
arr
arrCopy
slice
Pozwala to na znacznie bardziej jednolite przetwarzanie, ponieważ prostsze jest (IMHO) przetwarzanie list w stylu Pythona - filtrowanie jednej listy, aby utworzyć drugą. zgodnie z odpowiedzią Matta przed Beta 3, trzeba było utworzyć tymczasową tablicę, aby zmapować wycinek. Nowy kod jest teraz prostszy:
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
(choć żeby być uczciwym, foo to wciąż kawałek)
Odniesienie:
http://adcdownload.apple.com//Developer_Tools/xcode_6_beta_3_lpw27r/xcode_6_beta_3_release_notes__.pdf
Ważne zmiany, rozwiązane problemy, - Swift Language, akapit 1
„Tablica w języku Swift została całkowicie przeprojektowana, aby mieć pełną semantykę, taką jak Dictionary i String ... m”