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