附屬腳本用于向特定類型添加附屬腳本支持,通常為訪問集合,列表和序列的元素時(shí)提供語法便利。附屬腳本聲明使用關(guān)鍵字subscript,聲明形式如下:
subscript (parameter) -> (return type){
get{
statements
}
set(setter name){
statements
}
}
附屬腳本聲明只能在類,結(jié)構(gòu)體,枚舉,擴(kuò)展和協(xié)議聲明的上下文進(jìn)行聲明。
變量(parameters)指定一個(gè)或多個(gè)用于在相關(guān)類型的下標(biāo)腳本中訪問元素的索引(例如,表達(dá)式object[i]中的i)。盡管用于元素訪問的索引可以是任意類型的,但是每個(gè)變量必須包含一個(gè)用于指定每種索引類型的類型標(biāo)注。返回類型(return type)指定被訪問的元素的類型。
和計(jì)算性屬性一樣,下標(biāo)腳本聲明支持對訪問元素的讀寫操作。getter用于讀取值,setter用于寫入值。setter子句是可選的,當(dāng)僅需要一個(gè)getter子句時(shí),可以將二者都忽略且直接返回請求的值即可。也就是說,如果使用了setter子句,就必須使用getter子句。
setter的名字和封閉的括號是可選的。如果使用了setter名稱,它會被當(dāng)做傳給setter的變量的名稱。如果不使用setter名稱,那么傳給setter的變量的名稱默認(rèn)是value。setter名稱的類型必須與返回類型(return type)的類型相同。
可以在下標(biāo)腳本聲明的類型中,可以重載下標(biāo)腳本,只要變量(parameters)或返回類型(return type)與先前的不同即可。此時(shí),必須使用override關(guān)鍵字聲明那個(gè)被覆蓋的下標(biāo)腳本。(注:好亂啊!到底是重載還是覆蓋?!)
同樣可以在協(xié)議聲明的上下文中聲明下標(biāo)腳本,Protocol Subscript Declaration中有所描述。
更多關(guān)于下標(biāo)腳本和下標(biāo)腳本聲明的例子,請參考Subscripts。
附屬腳本聲明語法
附屬腳本聲明 → 附屬腳本頭(Head) 附屬腳本結(jié)果(Result) 代碼塊
附屬腳本聲明 → 附屬腳本頭(Head) 附屬腳本結(jié)果(Result) getter-setter塊
附屬腳本聲明 → 附屬腳本頭(Head) 附屬腳本結(jié)果(Result) getter-setter關(guān)鍵字(Keyword)塊
附屬腳本頭(Head) → 特性(Attributes)列表 可選 subscript 參數(shù)子句
附屬腳本結(jié)果(Result) → -> 特性(Attributes)列表 可選 類型