下标可以定义在类、结构体和枚举中。允许你通过在实例名称后面的方括号中传入一个或者多个索引值来对实例进行查询。
下标通常作为访问集合,列表或序列中元素的快捷方式。
实例下标
// 枚举结构中使用下标
enum MultiplicationTable:Int {
case one = 1,two,three,four,five,six,seven,eight,nine
// subscript关键字,一维
subscript(table:String)->String{
// 省略set的实现方式,下标为只读
if table == "MultiplicationTable" {
var content = ""
var line = 1
for i in 1 ... self.rawValue {
content.append("\(line) * \(self.rawValue) = \(line * self.rawValue)\n")
line += 1
}
return content
}
return ""
}
// 可以定义多个下标,二维
subscript(a:Int,b:String)->String{
get{
return "\(a) + \(b)"
}
set {
print(newValue)
}
}
}
let one : MultiplicationTable = .seven
let two = one[1,"a"]
类下标
正如上节所述,实例下标是在特定类型的一个实例上调用的下标。你也可以定义一种在这个类型自身上调用的下标。这种下标被称作类型下标。你可以通过在
subscript
关键字之前写下static
关键字的方式来表示一个类型下标。类类型可以使用class
关键字来代替static
,它允许子类重写父类中对那个下标的实现。
enum Planet: Int {
case mercury = 1, venus, earth, mars, jupiter, saturn, uranus, neptune
static subscript(n: Int) -> Planet {
return Planet(rawValue: n)!
}
}
let mars = Planet[4]
print(mars)
网友评论