下標(biāo)可以定義在類、結(jié)構(gòu)體和枚舉中,是訪問集合,列表或序列中元素的快捷方式??梢允褂孟聵?biāo)的索引,設(shè)置和獲取值,而不需要再調(diào)用對應(yīng)的存取方法
一個(gè)類型可以定義多個(gè)下標(biāo),通過不同索引類型進(jìn)行重載。下標(biāo)不限于一維,你可以定義具有多個(gè)入?yún)⒌南聵?biāo)滿足自定義類型的需求
下標(biāo)允許你通過在實(shí)例名稱后面的方括號中傳入一個(gè)或者多個(gè)索引值來對實(shí)例進(jìn)行存取。語法類似于實(shí)例方法語法和計(jì)算型屬性語法的混合。與定義實(shí)例方法類似,定義下標(biāo)使用 subscript關(guān)鍵字,指定一個(gè)或多個(gè)輸入?yún)?shù)和返回類型;與實(shí)例方法不同的是,下標(biāo)可以設(shè)定為讀寫或只讀。這種行為由 getter 和 setter 實(shí)現(xiàn)
subscript(index: Int) -> Int {
get {
// 返回一個(gè)適當(dāng)?shù)?Int 類型的值
}
set(newValue) {
// 執(zhí)行適當(dāng)?shù)馁x值操作
}
}
newValue的類型和下標(biāo)的返回類型相同。如同計(jì)算型屬性,可以不指定 setter 的參數(shù)(newValue)。如果不指定參數(shù),setter 會提供一個(gè)名為newValue的默認(rèn)參數(shù)。
如同只讀計(jì)算型屬性,可以省略只讀下標(biāo)的get關(guān)鍵字:
subscript(index: Int) -> Int {
// 返回一個(gè)適當(dāng)?shù)?Int 類型的值
}