天天看點

《Swift開發實戰》——第16章,第16.1節下标腳本文法

本節書摘來自異步社群《swift開發實戰》一書中的第16章,第16.1節下标腳本文法,作者 李甯,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

第16章 下标腳本

swift開發實戰

在swift語言中,類(class)、結構體(structure)和枚舉(enumeration)等目标中定義下标腳本,被認為是通路對象、集合或序列的快捷方式,不需要再調用執行個體的特定的指派和通路方法。在本章的内容中,将詳細講解swift下标腳本的基本知識。

16.1 下标腳本文法

在swift語言中,可以使用下标腳本通路一個數組(array)執行個體中的元素,參見如下所示的格式。

在通路字典(dictionary)執行個體中的元素時,可以通過如下所示的代碼實作。

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

在swift程式中使用下标腳本,通過在執行個體後面的方括号中傳入一個或者多個索引值來對執行個體進行通路和指派,其文法類似于執行個體方法和計算型屬性的混合。與定義執行個體方法類似,使用關鍵字subscript定義下标腳本,顯式地聲明入參(一個或多個)和傳回類型。與執行個體方法不同的是,下标腳本可以設定為讀寫或隻讀,這種方式和計算型屬性的getter和setter類似。參見如下所示的示範代碼。

在上述代碼中,newvalue的類型必須和下标腳本定義的傳回類型相同。與計算型屬性相同的是,即使不寫set的入參聲明newvalue,依然可以在set代碼塊中使用預設的變量newvalue來通路新賦的值。

在swift語言中,與隻讀計算型屬性一樣,可以直接将本應該寫在get代碼塊中的代碼寫在subscript中。參見如下所示的示範代碼。

例如在如下所示的代碼中,示範了在timestable結構體中使用隻讀下标腳本的用法,該結構體用來展示傳入整數的n倍。

《Swift開發實戰》——第16章,第16.1節下标腳本文法

執行個體檔案main.swift的具體實作代碼如下所示。

在上述代碼中,通過timestable結構體建立了一個用來表示索引值3倍的執行個體,數值3作為結構體構造函數入參初始化執行個體成員multiplier。此時可以通過下标腳本來得到結果,比如threetimestable[6]。上述語句通路了threetimestable的第六個元素,傳回6的3倍即18。

本執行個體執行後的效果如圖16-1所示。

《Swift開發實戰》——第16章,第16.1節下标腳本文法

上述timestable例子是基于一個固定的數學公式,這并不适合開放寫權限來對threetimestable [someindex]進行指派操作,這也是為什麼附屬腳本隻定義為隻讀的原因。