Resumen:
Las respuestas anteriores fueron ciertas hasta Beta 3 (y pueden cambiar nuevamente en versiones futuras)
Slice ahora actúa como una matriz, pero como @matt dijo anteriormente, es efectivamente una copia superficial de una matriz debajo del capó, hasta que se realice un cambio. Los sectores (ahora) ven una instantánea de los valores originales,
También tenga en cuenta que la sintaxis de los segmentos ha cambiado:
[from..upToButNotIncluding] -> [from..<upToButNotIncluding]
Ejemplo:
var arr = ["hello", "world", "goodbye"]
var arrCopy = arr
let slice = arr[0..<2]
arr[0] = "bonjour"
arr
arrCopy
slice
Esto permite un procesamiento mucho más uniforme, ya que es más simple (en mi humilde opinión) hacer el procesamiento de listas al estilo Python: filtrar una lista para hacer otra. según la respuesta de Matt antes de Beta 3, tenía que crear una matriz temporal para mapear una porción. El nuevo código ahora es más simple:
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
(aunque para ser justos, foo sigue siendo un trozo)
Referencia:
http://adcdownload.apple.com//Developer_Tools/xcode_6_beta_3_lpw27r/xcode_6_beta_3_release_notes__.pdf
Cambios importantes, problemas resueltos, lenguaje rápido, párrafo 1
"Array en Swift se ha rediseñado por completo para tener semántica de valor completo como Dictionary y String ... m"