类,结构和枚举可以定义下标,它们是访问集合,列表或序列的成员元素的快捷方式。 您可以使用下标来按索引设置和检索值,而不需要单独的设置和检索方法。 例如,您可以使用someArray [index]来访问数组中的元素,Dictionary实例中的元素可以使用someDictionary [key]来访问。
下标语法
下标使您能够通过在实例名称后面的方括号中写入一个或多个值来查询类型的实例。 它们的语法类似于实例方法语法和计算属性语法。 您使用subscript关键字编写下标定义,并以与实例方法相同的方式指定一个或多个输入参数和返回类型。 与实例方法不同,下标可以是读写或只读的。 此行为由getter和setter以与计算属性相同的方式传达:
subscript(index: Int) -> Int {
get {
// return an appropriate subscript value here
}
set(newValue) {
// perform a suitable setting action here
}
}
与只读计算属性一样,可以将只读下标的get关键字删除:
subscript(index: Int) -> Int {
// return an appropriate subscript value here
}
这里是一个只读下标实现的例子,它定义了一个Times表结构来表示整数的n次表:
struct TimesTable {
let multiplier: Int
subscript(index: Int) -> Int {
return multiplier * index
}
}
let threeTimesTable = TimesTable(multiplier: 3)
print("six times three is \(threeTimesTable[6])")
// Prints "six times three is 18"
下标用法
“下标”的确切含义取决于其使用的上下文。 下标通常用作访问集合,列表或序列中的成员元素的快捷方式。 您可以以最适当的方式为您的特定类或结构的功能实现下标。
例如,Swift的Dictionary类型实现了一个下标来设置和检索存储在Dictionary实例中的值。 您可以通过在下标括号中提供字典键类型的键,并将字典值类型的值分配给下标,来设置字典中的值:
var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
numberOfLegs["bird"] = 2