類、結構體和枚舉可以定義下標,他可以快速簡單地訪問集合(set,array,dict)的元素,你可以使使用下標來獲取和設置集合元素。 你可以定義一個類型的多個下標,通過索引值類型的不同來進行重載,而且索引值的個數可以是多個。 語法 先看一個實例 它允許你通過在實例後面的方括弧中傳入一個或者多個的索引 ...
類、結構體和枚舉可以定義下標,他可以快速簡單地訪問集合(set,array,dict)的元素,你可以使使用下標來獲取和設置集合元素。 你可以定義一個類型的多個下標,通過索引值類型的不同來進行重載,而且索引值的個數可以是多個。
語法
先看一個實例
subscript(index: Int) -> Int { get { // return an appropriate subscript value here } set(newValue) { // perform a suitable setting action here } }
它允許你通過在實例後面的方括弧中傳入一個或者多個的索引值來對實例進行訪問和賦值。語法類似於實例方法和計算型屬性的混合。與定義實例方法類似,定義下標使用subscript關鍵字,顯式聲明入參(一個或多個)和返回類型。與實例方法不同的是下標可以設定為讀寫或只讀。這種方式又有點像計算型屬性的getter和setter:
newValue的類型必須和subscript定義的返回類型相同。與計算型屬性相同的是set的入參聲明newValue就算不寫,在set代碼塊中依然可以使用預設的newValue這個變數來訪問新賦的值。 與只讀計算型屬性一樣,可以直接將原本應該寫在get代碼塊中的代碼寫在subscript中:
subscript(index: Int) -> Int { // 返回與入參匹配的Int類型的值 }