swift中的下標

類、結構體和枚舉可以定義下標,它可以作爲訪問集合、列表或序列成員元素的快捷方式。你可使用下標通過索 引值來設置或檢索值而不需要爲設置和檢索分別使用實例方法。比如說,用 someArray[index] 來訪問 Array 實例 中的元素以及用 someDictionary[key] 訪問 Dictionary 實例中的元素。

你可以爲一個類型定義多個下標,並且下標會基於傳入的索引值的類型選擇合適的下標重載使用。下標沒有限制 單個維度,你可以使用多個輸入形參來定義下標以滿足自定義類型的需求。

一、下標的語法

使用關鍵字 **subscript **來定義下標,並且指定一個或多個輸入形式參數和返回類型,與實例方法一樣。
與實例方法不同的是,下標可以是讀寫也可以是隻讀的。這個行爲通過與計算屬性中相同的 getter和setter傳達:

1  subscript(index:Int) -> Int {
2      get{
3          //return an appropriate subscript value here
4      }
5      set(newValue){
6          //perform a suitable setting action here
7      }
8  }

下面是一個只讀下標實現的栗子,它定義了一個 TimeTable 結構體來表示整數的n倍表:

1  struct TimesTable {
2      let multiplier: Int
3      subscript(index: Int) -> Int {
4          return multiplier * index
5      } 
6  }
7 let threeTimesTable = TimesTable(multiplier: 3)
8 print("six times three is \(threeTimesTable[6])")
9 // prints "six times three is 18"

在這個栗子中,創建了一個 TimeTable 的新實例來表示三倍表。它表示通過給結構體的 initializer 轉入值 3 來作爲 用於實例的 multiplier 形式參數。

二、下標用法

“下標”確切的意思取決於它使用的上下文。通常下標是用來訪問集合、列表或序列中元素的快捷方式。你可以在 你自己特定的類或結構體中自由實現下標來提供合適的功能。

例如,Swift 的 Dictionary 類型實現了下標來對 Dictionary 實例中存放的值進行設置和讀取操作。你可以在下標的 方括號中通過提供字典鍵類型相同的鍵來設置字典裏的值,並且把一個與字典值類型相同的值賦給這個下標:

1 var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
2 numberOfLegs["bird"] = 2

三、下標選項

下標可以接收任意數量的輸入形式參數,並且這些輸入形式參數可以是任意類型。下標也可以返回任意類型

下標可以使用變量形式參數和可變形式參數,但是不能使用輸入輸出形式參數或提供默認形式參數值。

類或結構體可以根據自身需要提供多個下標實現,合適被使用的下標會基於值類型或者使用下標時下標方括號裏 包含的值來推斷。這個對多下標的定義就是所謂的下標重載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章