OneDayOneSwift[12] - Subscripts

下標(biāo)腳本 可以定義在類(Class)、結(jié)構(gòu)體(structure)和枚舉(enumeration)中,是訪問(wèn)集合(collection),列表(list)或序列(sequence)中元素的快捷方式??梢允褂孟聵?biāo)腳本的索引設(shè)置和獲取值,不需要再調(diào)用對(duì)應(yīng)的存取方法。舉例來(lái)說(shuō),用下標(biāo)腳本訪問(wèn)一個(gè)Array實(shí)例中的元素可以寫作someArray[index],訪問(wèn)Dictionary實(shí)例中的元素可以寫作someDictionary[key]。

下標(biāo)腳本語(yǔ)法

subscript(index: Int) -> Int {
    get {
      // 返回一個(gè)適當(dāng)?shù)?Int 類型的值
    }

    set(newValue) {
      // 執(zhí)行適當(dāng)?shù)馁x值操作
    }
}

newValue的類型和下標(biāo)腳本的返回類型相同。如同計(jì)算型屬性,可以不指定 setter 的參數(shù)(newValue)。如果不指定參數(shù),setter 會(huì)提供一個(gè)名為newValue的默認(rèn)參數(shù)。

如同只讀計(jì)算型屬性,可以省略只讀下標(biāo)腳本的get關(guān)鍵字:

subscript(index: Int) -> Int {
    // 返回一個(gè)適當(dāng)?shù)?Int 類型的值
}

下面代碼演示了只讀下標(biāo)腳本的實(shí)現(xiàn),這里定義了一個(gè)TimesTable結(jié)構(gòu)體,用來(lái)表示傳入整數(shù)的乘法表:

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"

下標(biāo)腳本選項(xiàng)

下標(biāo)腳本可以接受任意數(shù)量的入?yún)?,并且這些入?yún)⒖梢允侨我忸愋汀O聵?biāo)腳本的返回值也可以是任意類型。下標(biāo)腳本可以使用變量參數(shù)和可變參數(shù),但不能使用輸入輸出參數(shù),
不能給參數(shù)設(shè)置默認(rèn)值。

一個(gè)類或結(jié)構(gòu)體可以根據(jù)自身需要提供多個(gè)下標(biāo)腳本實(shí)現(xiàn),使用下標(biāo)腳本時(shí)將通過(guò)入?yún)⒌臄?shù)量和類型進(jìn)行區(qū)分,自動(dòng)匹配合適的下標(biāo)腳本,這就是下標(biāo)腳本的重載。

要點(diǎn)總結(jié)

Subscript在類和機(jī)構(gòu)體里可以重載

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

相關(guān)閱讀更多精彩內(nèi)容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,204評(píng)論 1 10
  • Hello Word 在屏幕上打印“Hello, world”,可以用一行代碼實(shí)現(xiàn): 你不需要為了輸入輸出或者字符...
    restkuan閱讀 3,377評(píng)論 0 6
  • 下標(biāo)腳本 下標(biāo)腳本 可以定義在類、結(jié)構(gòu)體和枚舉這些目標(biāo)中,可以認(rèn)為是訪問(wèn)集合(collection),列表(li...
    cht005288閱讀 543評(píng)論 0 0
  • 基礎(chǔ)部分(The Basics) 當(dāng)推斷浮點(diǎn)數(shù)的類型時(shí),Swift 總是會(huì)選擇Double而不是Float。 結(jié)合...
    gamper閱讀 1,509評(píng)論 0 7
  • Swift屬性 Swift屬性將值跟特定的類,結(jié)構(gòu)體,枚舉關(guān)聯(lián)。分為存儲(chǔ)屬性和計(jì)算屬性,通常用于特定類型的實(shí)例。屬...
    小小廚師閱讀 991評(píng)論 0 0

友情鏈接更多精彩內(nèi)容