Zusammenfassung:
Die obigen Antworten waren bis zur Beta 3 wahr (und können sich in zukünftigen Versionen erneut ändern).
Slice verhält sich jetzt wie ein Array, ist jedoch, wie oben erwähnt, effektiv eine flache Kopie eines Arrays unter der Haube, bis eine Änderung vorgenommen wird. Slices (jetzt) sehen eine Momentaufnahme der ursprünglichen Werte.
Beachten Sie auch, dass sich die Slice-Syntax geändert hat:
[from..upToButNotIncluding] -> [from..<upToButNotIncluding]
Beispiel:
var arr = ["hello", "world", "goodbye"] // ["hello", "world", "goodbye"]
var arrCopy = arr
let slice = arr[0..<2] // ["hello", "world"]
arr[0] = "bonjour"
arr // ["bonjour", "world", "goodbye"]
arrCopy // ["hello", "world", "goodbye"]
slice // ["hello", "world"]
Dies ermöglicht eine viel gleichmäßigere Verarbeitung, da die Verarbeitung von Listen im Python-Stil einfacher ist (IMHO) - Filtern einer Liste, um eine andere zu erstellen. Gemäß Matts Antwort vor Beta 3 mussten Sie ein temporäres Array erstellen, um ein Slice zuzuordnen. Der neue Code ist jetzt einfacher:
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 // [{name "Alan" number 1}, {name "Bob" number 2}]
(obwohl um fair zu sein, ist foo immer noch ein Stück)
Referenz:
http://adcdownload.apple.com//Developer_Tools/xcode_6_beta_3_lpw27r/xcode_6_beta_3_release_notes__.pdf
Wichtige Änderungen, gelöste Probleme, - Schnelle Sprache, Absatz 1
"Array in Swift wurde komplett neu gestaltet, um eine vollständige Semantik wie Dictionary und String ... m zu erhalten."