本節書摘來自異步社群《swift開發實戰》一書中的第16章,第16.3節下标腳本選項,作者 李甯,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
16.3 下标腳本選項
在swift語言中,下标腳本允許任意數量的入參索引,并且每個入參類型也沒有限制。下标腳本的傳回值也可以是任何類型,下标腳本可以使用變量參數和可變參數。但是如果使用寫入讀出(in-out)參數或給參數設定預設值,這些操作都是不允許的。
在swift語言中,可以在一個類或結構體中根據自身需要提供多個下标腳本實作。在定義下标腳本時通過入參個類型進行區分,使用下标腳本時會自動比對合适的下标腳本實作運作,這就是下标腳本的重載。
在swift程式中,一個下标腳本入參是最常見的情況,但隻要有合适的場景也可以定義多個下标腳本入參。例如,在如下示範代碼中定義了一個matrix結構體,這将展現出一個double類型的二維矩陣。結構體matrix的下标腳本需要兩個整型參數。

執行個體檔案main.swift的具體實作代碼如下所示。
在上述代碼中,結構體matrix提供了兩個入參的構造方法,入參分别是rows和columns,這樣就建立了一個足夠容納rows * columns個數的double類型數組。為了實作存儲操作,将數組的大小和數組每個元素初始值0.0都傳入數組的構造方法中來建立一個正确大小的新數組。
本執行個體執行後的效果如圖16-2所示。
在swift語言中,可以通過傳入合适的row和column的數量構造一個新的matrix執行個體。參見如下所示的示範代碼。
通過上述代碼建立了一個新的兩行兩列的matrix執行個體,這樣作為閱讀順序是從左上到右下的matrix執行個體中,其數組執行個體grid是矩陣二維數組的扁平化存儲過程。
在上述代碼中,将值賦給帶有row和column下标腳本的matrix執行個體表達式,這樣可以完成整個指派操作,下标腳本入參使用逗号“,”進行分隔。參見如下所示的示範代碼。
通過上面兩的條語句,分别設定matrix的右上值為1.5,左下值設定為3.2。
在matrix下标腳本的getter和setter中,同時調用了下标腳本來判斷入參的row和column是否有效。為了友善進行斷言,matrix包含了一個名為indexisvalid的成員方法,用來确認入參的row或column值是否會造成數組越界。參見如下所示的示範代碼。
在swift語言中,斷言在下标腳本越界時觸發。參見如下所示的示範代碼。
import uikit
extension string
}
class viewcontroller: uiviewcontroller {