數(shù)組和字典等集合類型,可以通過下標(biāo)的方式來快速獲取相對(duì)應(yīng)的值。在swift中,可以通過subscript來實(shí)現(xiàn)這個(gè)功能。
假設(shè)有一個(gè)學(xué)生類,有一個(gè)成員屬性names來記錄所有學(xué)生的姓名:
class Students {
var names: [String] = {
return ["Wangxiaole", "Guanyi", "Liuxiang"]
}()
}
let students = Students()
let name = students.names[0]
那么在獲取數(shù)組中指定位置的元素,需要通過names來獲取元素。而使用subscript后:
extension Students {
subscript(n: Int) -> String {
return names[n]
}
}
let name2 = students[0]
這樣就可以不通過訪問names來獲取指定的學(xué)生姓名??墒沁@樣只能用下標(biāo)來獲取元素,如果要設(shè)置則需要實(shí)現(xiàn)get和set方法:
extension Students {
subscript(n: Int) -> String {
get {
return names[n]
}
set(name) {
names[n] = name
}
}
}
let name3 = students[0]
students[0] = "XXXX"
這樣就可以將names直接通過下標(biāo)的方式來設(shè)置和獲取了。是不是感覺帥帥的。