下标脚本允许你通过在实例后面的方括号中传入一个或者多个的索引值来对实例进行访问和赋值。语法类似于实 例方法和计算型属性的混合
struct TimesTable{
let multiplier: Int
subscript(index:Int) -> Int{
return multiplier * index;
}
}
let threeTimesTable = TimesTable(multiplier: 3)
print("3的6倍是\(threeTimesTable[6])")
TimesTable例子是基于一个固定的数学公式。它并不适合对threeTimesTable[6]进行赋值操作,这也是为什么附属脚本只定义为只读的原因。
var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
numberOfLegs["bird"] = 2
Swift中字典的附属脚本实现中,在get部分返回值是Int?,上例中numberOfLegs字典通过附属脚本返回的是一个Int?或者说“可选Int”,不是每一个字典的索引都能得到一个整型值,对于没有设置过值得索引的访问返回结果就是nil;同样想要从字典实例中删除某个索引下的值也是需要给这个索引赋值的nil即可。
继承
一个类可以继承另一个类的方法,属性和其他特性。当一个类继承其他类时,继承类叫子类,被继承类叫超类。
Swift中的类并不是从一个通用的基类继承而来。如果你不为你定义的类指定一个超类的话,这个类就自动成为基类。
防止重写
你可以通过方法,属性或下标脚本标记为final来防止它们被重写,只需要在声明关键字前加上final特性即可。