สรุป:
คำตอบข้างต้นเป็นจริงจนถึงเบต้า 3 (และอาจมีการเปลี่ยนแปลงอีกครั้งในอนาคต)
ตอนนี้ Slice ทำหน้าที่เหมือนอาร์เรย์ แต่ตามที่ @matt กล่าวไว้ข้างต้นเป็นสำเนาตื้นไปยังอาร์เรย์ที่อยู่ใต้ฝากระโปรงได้อย่างมีประสิทธิภาพจนกว่าจะมีการเปลี่ยนแปลง Slices (ตอนนี้) ดูภาพรวมของค่าดั้งเดิม
โปรดทราบว่าไวยากรณ์ของ Slice มีการเปลี่ยนแปลง:
[from..upToButNotIncluding] -> [from..<upToButNotIncluding]
ตัวอย่าง:
var arr = ["hello", "world", "goodbye"]
var arrCopy = arr
let slice = arr[0..<2]
arr[0] = "bonjour"
arr
arrCopy
slice
สิ่งนี้ช่วยให้การประมวลผลแบบสม่ำเสมอมากขึ้นเนื่องจากง่ายกว่า (IMHO) ในการประมวลผลรายการสไตล์หลาม - กรองรายการหนึ่งเพื่อสร้างอีกรายการ ตามคำตอบของ Matt ก่อนเบต้า 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
การเปลี่ยนแปลงที่สำคัญปัญหาที่ได้รับการแก้ไข - ภาษา Swift ย่อหน้าที่ 1
"Array ใน Swift ได้รับการออกแบบใหม่ทั้งหมดเพื่อให้มีความหมายเต็มค่าเช่น Dictionary และ String ... m"