Resumo:
As respostas acima eram verdadeiras até o Beta 3 (e podem mudar novamente em versões futuras)
O Slice agora atua como um array, mas como @matt disse acima, é efetivamente uma cópia superficial para um array por baixo do capô, até que uma alteração seja feita. Slices (agora) veja um instantâneo dos valores originais,
Observe também que a sintaxe da fatia mudou:
[from..upToButNotIncluding] -> [from..<upToButNotIncluding]
Exemplo:
var arr = ["hello", "world", "goodbye"]
var arrCopy = arr
let slice = arr[0..<2]
arr[0] = "bonjour"
arr
arrCopy
slice
Isso permite um processamento muito mais uniforme, pois é mais simples (IMHO) fazer o processamento de listas no estilo python - filtrando uma lista para fazer outra. de acordo com a resposta de Matt antes do Beta 3, você tinha que criar uma matriz temporária para mapear uma fatia. O novo código agora é mais simples:
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
(embora para ser justo, foo ainda é uma fatia)
Referência:
http://adcdownload.apple.com//Developer_Tools/xcode_6_beta_3_lpw27r/xcode_6_beta_3_release_notes__.pdf
Alterações importantes, problemas resolvidos, - linguagem rápida, parágrafo 1
"Array em Swift foi completamente redesenhado para ter uma semântica de valor total, como Dicionário e String ... m"