数组和字典等集合类型,可以通过下标的方式来快速获取相对应的值。在swift中,可以通过subscript来实现这个功能。
假设有一个学生类,有一个成员属性names来记录所有学生的姓名:
class Students {
var names: [String] = {
return ["Wangxiaole", "Guanyi", "Liuxiang"]
}()
}
let students = Students()
let name = students.names[0]
那么在获取数组中指定位置的元素,需要通过names来获取元素。而使用subscript后:
extension Students {
subscript(n: Int) -> String {
return names[n]
}
}
let name2 = students[0]
这样就可以不通过访问names来获取指定的学生姓名。可是这样只能用下标来获取元素,如果要设置则需要实现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直接通过下标的方式来设置和获取了。是不是感觉帅帅的。