下標腳本可以定義在類(Class)、結構體(Struct)、枚舉(enumeration)這些目標中,可以認為是訪問集合,列表或序列的快捷方式,使用下標腳本的索引設置和獲取值,不需要再調用實例的特定的賦值和訪問方法。對於同一個目標可以定義多個下標腳本,通過索引值類型的不同來進行重載,下標腳本不限於單 ...
下標腳本可以定義在類(Class)、結構體(Struct)、枚舉(enumeration)這些目標中,可以認為是訪問集合,列表或序列的快捷方式,使用下標腳本的索引設置和獲取值,不需要再調用實例的特定的賦值和訪問方法。對於同一個目標可以定義多個下標腳本,通過索引值類型的不同來進行重載,下標腳本不限於單個緯度,你可以定義多個入參的下標腳本滿足自定義類型的需求。
1.下標腳本的語法
下標腳本允許你通過在實例後面的方括弧中傳入一個或多個的索引值來對實例進行訪問和賦值。語法類似於實例方法和計算屬性的混合。與定義實例方法類似,定義下標腳本使用subscript關鍵字,顯示聲明入參(一個或多個)和返回類型。與實例方法不同的是下標腳本可以設定為讀寫或只讀。這種方式又有點像計算屬性的getter和setter:
subscript(index:Int)->Int { get { //返回與入參匹配的int類型的值 } set(newValue) { //執行賦值參數 } }
newValue的類型必須和下標腳本定義的返回類型相同。與計算型屬性相同的是set的入參聲明newValue就算不寫,在set代碼塊中依然可以使用預設的newValue這個變數來訪問新賦的值。與只讀計算屬性一樣,可以直接將原本應該寫在get代碼塊中的代碼寫在subscript中:
subscript(index:Int)->Int { //返回與入參匹配的int類型的值 }
2.下標腳本用法
根據使用場景不同下標腳本也具有不同的含義。通常下標腳本是用來訪問集合,列表或序列中元素的快捷方式就。可以在你自己特定的類或結構體中自由的實現下標腳本來提供合適的功能。
例如,Swift的字典(Dictionary)實現了通過下標腳本來對其實例中存放的值進行存取操作。
var numberOfLegs = ["spider":8, "ant":6, "cat":4] numberOfLegs["bird"] = 4 //存值
3.下標腳本選項
下標腳本允許任意數量的入參索引,並且每個入參索引類型沒有限制。下標腳本的返回值也可以是任意類型。