天天看點

Swift 下标腳本

下标腳本 可以定義在類(Class)、結構體(structure)和枚舉(enumeration)這些目标中,可以認為是通路對象、集合或序列的快捷方式,不需要再調用執行個體的特定的指派和通路方法。

舉例來說,用下标腳本通路一個數組(Array)執行個體中的元素可以這樣寫 someArray[index] ,通路字典(Dictionary)執行個體中的元素可以這樣寫 someDictionary[key]。

對于同一個目标可以定義多個下标腳本,通過索引值類型的不同來進行重載,而且索引值的個數可以是多個。

下标腳本允許你通過在執行個體後面的方括号中傳入一個或者多個的索引值來對執行個體進行通路和指派。

文法類似于執行個體方法和計算型屬性的混合。

與定義執行個體方法類似,定義下标腳本使用subscript關鍵字,顯式聲明入參(一個或多個)和傳回類型。

與執行個體方法不同的是下标腳本可以設定為讀寫或隻讀。這種方式又有點像計算型屬性的getter和setter:

根據使用場景不同下标腳本也具有不同的含義。

通常下标腳本是用來通路集合(collection),清單(list)或序列(sequence)中元素的快捷方式。

你可以在你自己特定的類或結構體中自由的實作下标腳本來提供合适的功能。

例如,Swift 的字典(Dictionary)實作了通過下标腳本對其執行個體中存放的值進行存取操作。在下标腳本中使用和字典索引相同類型的值,并且把一個字典值類型的值指派給這個下标腳來為字典設值:

下标腳本允許任意數量的入參索引,并且每個入參類型也沒有限制。

下标腳本的傳回值也可以是任何類型。

下标腳本可以使用變量參數和可變參數。

一個類或結構體可以根據自身需要提供多個下标腳本實作,在定義下标腳本時通過傳入參數的類型進行區分,使用下标腳本時會自動比對合适的下标腳本實作運作,這就是下标腳本的重載。

輸出:

Matrix 結構體提供了一個兩個傳入參數的構造方法,兩個參數分别是rows和columns,建立了一個足夠容納rows * columns個數的Double類型數組。為了存儲,将數組的大小和數組每個元素初始值0.0。