類神得,結(jié)構(gòu)和枚舉可以定義下標,它們是訪問集合饥侵,列表或序列的成員元素的快捷方式。 您可以使用下標來按索引設(shè)置和檢索值衣屏,而不需要單獨的設(shè)置和檢索方法躏升。 例如,您可以使用someArray [index]來訪問數(shù)組中的元素狼忱,Dictionary實例中的元素可以使用someDictionary [key]來訪問膨疏。
下標語法
下標使您能夠通過在實例名稱后面的方括號中寫入一個或多個值來查詢類型的實例。 它們的語法類似于實例方法語法和計算屬性語法钻弄。 您使用subscript關(guān)鍵字編寫下標定義佃却,并以與實例方法相同的方式指定一個或多個輸入?yún)?shù)和返回類型。 與實例方法不同窘俺,下標可以是讀寫或只讀的饲帅。 此行為由getter和setter以與計算屬性相同的方式傳達:
subscript(index: Int) -> Int {
get {
// return an appropriate subscript value here
}
set(newValue) {
// perform a suitable setting action here
}
}
與只讀計算屬性一樣,可以將只讀下標的get關(guān)鍵字刪除:
subscript(index: Int) -> Int {
// return an appropriate subscript value here
}
這里是一個只讀下標實現(xiàn)的例子瘤泪,它定義了一個Times表結(jié)構(gòu)來表示整數(shù)的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"
下標用法
“下標”的確切含義取決于其使用的上下文灶泵。 下標通常用作訪問集合,列表或序列中的成員元素的快捷方式对途。 您可以以最適當?shù)姆绞綖槟奶囟惢蚪Y(jié)構(gòu)的功能實現(xiàn)下標赦邻。
例如,Swift的Dictionary類型實現(xiàn)了一個下標來設(shè)置和檢索存儲在Dictionary實例中的值实檀。 您可以通過在下標括號中提供字典鍵類型的鍵惶洲,并將字典值類型的值分配給下標,來設(shè)置字典中的值:
var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
numberOfLegs["bird"] = 2