OneDayOneSwift[12] - Subscripts

下標腳本 可以定義在類(Class)、結構體(structure)和枚舉(enumeration)中,是訪問集合(collection),列表(list)或序列(sequence)中元素的快捷方式??梢允褂孟聵四_本的索引設置和獲取值,不需要再調用對應的存取方法。舉例來說,用下標腳本訪問一個Array實例中的元素可以寫作someArray[index],訪問Dictionary實例中的元素可以寫作someDictionary[key]。

下標腳本語法

subscript(index: Int) -> Int {
    get {
      // 返回一個適當的 Int 類型的值
    }

    set(newValue) {
      // 執(zhí)行適當的賦值操作
    }
}

newValue的類型和下標腳本的返回類型相同。如同計算型屬性,可以不指定 setter 的參數(newValue)。如果不指定參數,setter 會提供一個名為newValue的默認參數。

如同只讀計算型屬性,可以省略只讀下標腳本的get關鍵字:

subscript(index: Int) -> Int {
    // 返回一個適當的 Int 類型的值
}

下面代碼演示了只讀下標腳本的實現,這里定義了一個TimesTable結構體,用來表示傳入整數的乘法表:

struct TimesTable {
    let multiplier: Int
    subscript(index: Int) -> Int {
        return multiplier * index
    }
}
let threeTimesTable = TimesTable(multiplier: 3)
print("six times three is \(threeTimesTable[6])")
// 輸出 "six times three is 18"

下標腳本選項

下標腳本可以接受任意數量的入參,并且這些入參可以是任意類型。下標腳本的返回值也可以是任意類型。下標腳本可以使用變量參數和可變參數,但不能使用輸入輸出參數,
不能給參數設置默認值。

一個類或結構體可以根據自身需要提供多個下標腳本實現,使用下標腳本時將通過入參的數量和類型進行區(qū)分,自動匹配合適的下標腳本,這就是下標腳本的重載。

要點總結

Subscript在類和機構體里可以重載

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,190評論 1 10
  • Hello Word 在屏幕上打印“Hello, world”,可以用一行代碼實現: 你不需要為了輸入輸出或者字符...
    restkuan閱讀 3,362評論 0 6
  • 下標腳本 下標腳本 可以定義在類、結構體和枚舉這些目標中,可以認為是訪問集合(collection),列表(li...
    cht005288閱讀 537評論 0 0
  • 基礎部分(The Basics) 當推斷浮點數的類型時,Swift 總是會選擇Double而不是Float。 結合...
    gamper閱讀 1,489評論 0 7
  • Swift屬性 Swift屬性將值跟特定的類,結構體,枚舉關聯。分為存儲屬性和計算屬性,通常用于特定類型的實例。屬...
    小小廚師閱讀 973評論 0 0

友情鏈接更多精彩內容