Короткий зміст:
Наведені вище відповіді були правдивими до бета-версії 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) виконувати обробку списку стилів python - фільтрування одного списку для створення іншого. відповідно до відповіді Метта до бета-версії 3, вам потрібно було створити тимчасовий масив, щоб зіставити фрагмент. Новий код тепер простіший:
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
Важливі зміни, вирішені проблеми, - швидка мова, пункт 1
"Масив у Swift був повністю перероблений, щоб мати повноцінну семантику, як Dictionary і String ... m"