亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

Swift教程之下標(biāo)詳解

2020-03-09 17:51:01
字體:
供稿:網(wǎng)友
這篇文章主要介紹了Swift教程之下標(biāo)詳解,本文講解了下標(biāo)語法、下標(biāo)的使用、下標(biāo)選項等內(nèi)容,需要的朋友可以參考下
 

類,結(jié)構(gòu)和枚舉類型都可以通過定義下標(biāo)來訪問一組或者一個序列中的成員元素。通過下標(biāo)索引就可以方便地檢索和設(shè)置相應(yīng)的值,而不需要其他的額外操作。比如你可以通過someArray[index]來訪問數(shù)組中的元素,或者someDictionary[key]來對字典進(jìn)行索引。

你可以為一個類型定義多個下標(biāo),以及適當(dāng)?shù)南聵?biāo)重載用來根據(jù)傳遞給下標(biāo)的索引來設(shè)置相應(yīng)的值。下標(biāo)不僅可以定義為一維的,還可以根據(jù)需要定義為多維的,多個參數(shù)的。

1、下標(biāo)語法

下標(biāo)可以讓你通過實例名后加中括號內(nèi)一個或多個數(shù)值的形式檢索一個元素。語法和方法語法和屬性語法類似,通過使用subscript關(guān)鍵定義,一個或多個輸入?yún)?shù)以及一個返回值。不同于實例方法的是,下標(biāo)可以是可讀寫的或者只讀的。這種行為通過一個getter和setter語句聯(lián)通,就像是計算屬性一樣。

 

復(fù)制代碼代碼如下:
 
subscript(index: Int) -> Int {
    get {
        // return an appropriate subscript value here
    }
    set(newValue) {
        // perform a suitable setting action here
    }
}

newValue的類型和下標(biāo)返回的類型一樣。和計算屬性一樣,你可以選擇不指定setter的參數(shù),因為當(dāng)你不指定的時候,默認(rèn)參數(shù)newValue會被提供給setter。

 

和計算屬性一樣,只讀下標(biāo)可以不需要get關(guān)鍵詞:

 

復(fù)制代碼代碼如下:
 
subscript(index: Int) -> Int {
    // return an appropriate subscript value here
}

下面是一個只讀下標(biāo)的實現(xiàn),定義了一個TimesTable結(jié)構(gòu)來表示一個整數(shù)的倍數(shù)表:

 

 

復(fù)制代碼代碼如下:

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

 

在這個例子中,實例TimesTable被創(chuàng)建為3倍數(shù)表,這是通過在初始化的時候為multiplier參數(shù)傳入的數(shù)值3設(shè)置的。

注意:

倍數(shù)表是根據(jù)特定的數(shù)學(xué)規(guī)則設(shè)置的,所以不應(yīng)該為threeTimeTable[someIndex]元素設(shè)置一個新值,所以TimesTable的下標(biāo)定義為只讀。

2、下標(biāo)的使用

下標(biāo)的具體含義由使用它時的上下文來確定。下標(biāo)主要用來作為集合,列表和序列的元素快捷方式。你可以自由的為你的類或者結(jié)構(gòu)定義你所需要的下標(biāo)。

比如說,Swift中字典類型實現(xiàn)的下標(biāo)是設(shè)置和檢索字典實例中的值。可以通過分別給出下標(biāo)中的關(guān)鍵詞和值來設(shè)置多個值,也可以通過下標(biāo)來設(shè)置單個字典的值:

 

復(fù)制代碼代碼如下:
 
var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
numberOfLegs["bird"] = 2

 

上面的例子中定義了一個變量numberOfLegs,然后通過鍵值對初始化。numberOfLegs的類型是字典類型Dictionary<String, Int>。在字典創(chuàng)建之后,例子使用了下標(biāo)賦值方法添加了一個類型為字符串的鍵”bird”和Int值2到字典中。

更多關(guān)于字典的下標(biāo)可以參考:訪問和修改字典這一章節(jié)

注意:

Swift中字典類型實現(xiàn)的鍵值對下標(biāo)是可選類型。對于numberOfLges字典來說,返回的值是Int?,也就是可選Int值。字典的這種使用可選類型下標(biāo)的方式說明不是所有的鍵都有對應(yīng)的值。同樣也可以通過給鍵賦值nil來刪除這個鍵。

3、下標(biāo)選項

下標(biāo)可以接收任意數(shù)量的參數(shù),參數(shù)的類型也可以各異。下標(biāo)還可以返回任何類型的值。下標(biāo)可以使用變量參數(shù)或者可變參數(shù),但是不能夠使用輸入輸出參數(shù)或者提供默認(rèn)參數(shù)的值。

類或者結(jié)構(gòu)可以根據(jù)需要實現(xiàn)各種下標(biāo)方式,可以在需要的時候使用合適的下標(biāo)通過中括號中的參數(shù)返回需要的值。這種多下標(biāo)的定義被稱作下標(biāo)重載。

當(dāng)然,最常見的下標(biāo)用法是單個參數(shù),也可以定義多個參數(shù)的下標(biāo)。下面的例子演示了一個矩陣Matrix結(jié)構(gòu),它含有二維的Double值。矩陣結(jié)構(gòu)的下標(biāo)包括兩個整形參數(shù):

 

復(fù)制代碼代碼如下:

struct Matrix {
    let rows: Int, columns: Int
    var grid: Double[]
    init(rows: Int, columns: Int) {
        self.rows = rows
        self.columns = columns
        grid = Array(count: rows * columns, repeatedValue: 0.0)
    }
    func indexIsValidForRow(row: Int, column: Int) -> Bool {
        return row >= 0 && row < rows && column >= 0 && column < columns
    }
    subscript(row: Int, column: Int) -> Double {
        get {
            assert(indexIsValidForRow(row, column: column), "Index out of range")
            return grid[(row * columns) + column]
        }
        set {
            assert(indexIsValidForRow(row, column: column), "Index out of range")
            grid[(row * columns) + column] = newValue
        }
    }
}

矩陣Matrix提供了一個初始化方法,使用兩個參數(shù)rows和columns,然后建立了一個數(shù)組來存儲類型為Double的值rows*columns。每個矩陣中的位置都被設(shè)置了一個初始值0.0。通過傳遞初始值0.0和數(shù)組長度給數(shù)組初始化方法完成上述操作。數(shù)組的初始化方法在:創(chuàng)建和初始化數(shù)組中有更詳細(xì)的敘述。

 

你可以傳遞兩個參數(shù)row和column來完成Matrix的初始化:

 

復(fù)制代碼代碼如下:

var matrix = Matrix(rows: 2, columns: 2)

上面的初始化操作創(chuàng)建了一個兩行兩列的矩陣Matrix實例。這個矩陣實例的grid數(shù)組看起來是平坦的,但是實際上是矩陣從左上到右下的一維存儲形式。

 

Swift教程之下標(biāo)詳解

矩陣中的值可以通過使用包含row和column以及逗號的下標(biāo)來設(shè)置:

 

復(fù)制代碼代碼如下:

matrix[0, 1] = 1.5
matrix[1, 0] = 3.2

 

這兩個語句調(diào)用了下標(biāo)的setter方法為右上和左下角的兩個元素分別賦值1.5和3.2

Swift教程之下標(biāo)詳解

矩陣下標(biāo)的getter和setter方法都包括了一個斷言語句來檢查下標(biāo)row和column是否有效。通過indexIsValid方法來判斷row和column是否在矩陣的范圍內(nèi):

 

復(fù)制代碼代碼如下:
 
func indexIsValidForRow(row: Int, column: Int) -> Bool {
    return row >= 0 && row < rows && column >= 0 && column < columns
}

如果訪問的矩陣越界的時候,斷言就會被觸發(fā):

 

 

復(fù)制代碼代碼如下:
 
let someValue = matrix[2, 2]
// this triggers an assert, because [2, 2] is outside of the matrix bounds
 


注:相關(guān)教程知識閱讀請移步到swift教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
777午夜精品福利在线观看| 国产午夜在线视频| 精品久久香蕉国产线看观看亚洲| 亚洲tv在线观看| 色欲久久久天天天综合网| 欧美日韩高清影院| 日本不卡视频一区| 精品一区二区在线欧美日韩| 久久综合88中文色鬼| 亚洲大尺度美女在线| 国产亚洲精品bt天堂精选| 国产精品久久久久久久无码| 超碰在线91| 国产一区喷水| 亚洲精品国产精品乱码在线观看| 日韩av免费在线看| 新狼窝色av性久久久久久| 久久精品资源| 91久久精品久久国产性色也91| 成人午夜激情视频| 少妇高潮久久久久久潘金莲| 亚洲乱码在线| 91高潮大合集爽到抽搐| 国产精品h在线观看| 黄色三级网站在线观看| 国产精品99久久久久久www| 精品亚洲免a| 香蕉视频在线观看免费| 成人在线免费观看网址| 暖暖视频在线免费观看| 麻豆成人入口| 欧美一区在线直播| 性做久久久久久免费观看欧美| 国产区亚洲区欧美区| 免费一区二区三区视频狠狠| 国产成人精品a视频| 国产成人午夜视频| 视频一区二区不卡| 久久视频在线| 精品人妻一区二区三区含羞草| 在线观看中文| 国产九九热视频| 潘金莲一级淫片aaaaaa播放1| 午夜黄色一级片| 进去里视频在线观看| 欧美巨猛xxxx猛交黑人97人| 最近免费中文字幕大全免费版视频| 国产一区二区高清| 国产精品xxx| 日本另类视频| 永久免费看片直接| 欧美 亚洲 另类 激情 另类| 国产精品一色哟哟哟| 50路60路老熟妇啪啪| 中国女人内谢25xxxxx| 日韩成人免费看| 懂色aⅴ精品一区二区三区蜜月| 天堂网站www天堂资源在线| 日本中文字幕一区二区视频| 国产成人精品亚洲日本在线桃色| 久久久91精品国产一区二区三区| 亚洲激情图片网| 国产精品扒开腿做爽爽爽视频| 欧美日韩视频在线第一区| 亚州精品天堂中文字幕| 91在线观看视频| 欧美黑人又粗又大又爽免费| 一区二区三区四区在线不卡高清| 亚洲精品美女在线| 精品国产免费一区二区三区香蕉| 一区二区在线免费观看| 日韩一区二区三区免费看| 成人免费视频网址| 亚洲成av人综合在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 国产剧情av在线播放| 曰本人一级毛片免费完整视频| 九九九久久国产免费| 国产精品中文字幕日韩精品| 中文字幕42页丝袜| 综合欧美国产视频二区| 男生女生差差差的视频在线观看| 黑人极品videos精品欧美裸| 人妖精品videosex性欧美| 99成人在线观看| 欧美丝袜丝交足nylons| 丰满圆润老女人hd| 日产电影一区二区三区| 成人精品免费在线观看| 亚洲精品中文字幕有码专区| 中文字幕在线中文字幕在线中三区| 亚洲午夜在线观看| 国产日本精品视频| 在线宅男视频| 人在线成免费视频| 日韩欧美国产三级电影视频| 国内一区二区三区精品视频| 欧美国产精品中文字幕| 午夜精品一区二区三区在线观看| 欧美日韩一区二区在线播放| 久久久久国产精品厨房| 忘忧草在线www成人影院| 中文字幕日韩在线播放| 亚洲视频一区二区在线观看| 青青视频在线免费观看| 免费看的毛片| 视频一区视频二区中文| 青娱乐极品盛宴一区二区| 亚洲精品无amm毛片| 亚洲美女主播视频免费观看| 国产精品亚洲视频| 韩日在线播放| 日日夜夜一区二区| 国产精品自拍电影| 欧美精品二区三区| 精品乱子伦一区二区| 国产精品天天操| 国产午夜在线一区二区三区| 中文综合在线观看| 黑巨茎大战欧洲金发美女| 少妇高潮大叫好爽喷水| 欧美日韩国产123| 国产一区二区自拍视频| 欧美wwwwxxxx| 国产亚洲一区二区精品| 亚洲欧美久久| 中国xxxx自拍视频| 日本午夜在线观看| 黄页网址大全免费观看| 欧美在线免费播放| 97视频在线观看亚洲| 成人涩涩小片视频日本| 久久九九久久九九| 成人在线视频电影| 亚洲欧美自拍视频| 日韩不卡一二区| 亚洲人人夜夜澡人人爽| 国产精品第四页| 天天综合五月天| 日本最新高清不卡中文字幕| 色先锋av资源在线| 日本熟女毛茸茸| 免费永久在线观看黄网| 日韩电影免费观看在线观看| 一级做a爰片久久毛片16| 国产精品毛片久久| 欧美美乳视频网站在线观看| 亚洲免费av一区| 不卡的av一区| 最新欧美色图| 日本大片在线看黄a∨免费| 国产va在线| 91看片就是不一样| 中文字幕av无码一区二区三区| 在线观看三级网站| 中文字幕欧美精品日韩中文字幕| 鲁丝片一区二区三区| 嘿嘿视频在线观看| 国内精品久久久久久影视8| 亚洲激情图片一区| 欧美性xxxxxxxxx| 国产高清一区二区| 久久久精品一区二区三区| 午夜精品一区二区三区国产| 午夜精品免费观看| 亚洲精品av在线播放| 美女一区网站| 亚洲精品在线一区二区| 综合网日日天干夜夜久久| 在线欧美福利| 亚洲色婷婷综合开心网| 美女搞黄视频在线观看| 国产午夜精品理论片a级大结局| 日本黄色动态图| 欧美一区二区日韩一区二区| 国产xxx在线| 69ww免费视频播放器| 黄网站在线免费| 一个人看的www视频在线免费观看| 精品日产乱码久久久久久仙踪林| a级黄色片免费看| 欧洲美女免费图片一区| 肉丝袜脚交视频一区二区| 看全色黄大色黄大片免责看的| 成年网站在线免费观看| 国产乱女淫av麻豆国产| 美女被内谢流白浆高视频| 久久精品久久久久久久| 黄色的视频在线观看免费| 翡翠波斯猫1977年美国| 99精品视频免费看| 国产又黄又粗视频| 国产福利不卡视频| 性视频1819p久久| 日韩精选在线观看| 91年精品国产| 国产一区二区三区国产精品| 黄色不卡一区| 精品成人国产在线观看男人呻吟| 全部免费毛片在线播放网站| 中文乱码字幕av网站| 精品蜜桃一区二区三区| 一级片视频免费看| 国产黄色一级大片| 黄色三级小视频| 婷婷综合久久一区二区三区| 午夜免费久久看| 免费精品视频一区二区三区| 国产乱淫a∨片免费观看| 亚洲成av人影片在线观看| 巨胸大乳www视频免费观看| 国产又色又爽又黄刺激在线视频| 成人av在线亚洲| 激情偷乱视频一区二区三区| 日本欧美肥老太交大片| 中文字幕av一区二区| 高清不卡一区二区| 免费观看在线黄色网| 久久久影院一区二区三区| 日韩av加勒比| 亚洲国产精品成人va在线观看| 日韩亚洲国产欧美| 国产精品丝袜一区二区三区| 在线免费精品视频| 国产剧情日韩欧美| 91在线观看入口| 日韩一区二区三区四区区区| 国产乱视频在线观看| 99久精品国产| 国产精品久久久久久av福利| 国产麻豆视频一区| 中文字幕av免费| а√天堂官网中文在线| 久久国产精品免费观看| 啦啦啦中文在线观看日本| 色偷偷偷亚洲综合网另类| 国产av一区二区三区| 国产一二区在线| 免费一级在线观看播放网址| 国产三级做爰在线观看| 欧美高清在线| 欧美视频在线免费播放| 韩国三级hd中文字幕有哪些| 91久久黄色| 九九热精品免费视频| 亚洲国产成人一区二区三区| 日韩一级裸体免费视频| 伊人色在线观看| 四虎影院成人| 国产精品嫩草视频| 日本男人天堂网| 人妻精品久久久久中文字幕| 性欧美videos白嫩| 久久99久久99精品免观看粉嫩| 国产99在线|中文| 精品肉丝脚一区二区三区| 3d动漫一区二区三区在线观看| 好了av在线| 日韩精品视频播放| 亚洲码欧美码一区二区三区| 无码人妻精品一区二区三区66| 五月天综合网站| 日韩经典av| 狠狠色狠狠色综合日日91app| 免费观看成人性生生活片| 韩曰欧美视频免费观看| 亚洲我射av| 久久久精品一区二区| 日韩国产精品91| 精品国内自产拍在线视频| 久88久久88久久久| 久久久综合免费视频| 成人在线国产| 亚洲 国产 欧美 日韩| 777午夜精品电影免费看| 精品人妻久久久久一区二区三区| 怡红院av一区二区三区| 亚洲一区二区精品久久av| 最新中文字幕日本| 国产日韩欧美一区二区| 日本va欧美va精品| 国产一二区在线观看| 亚洲激情啪啪| 91麻豆精品国产91久久久久推荐资源| 99视频这里有精品| 91啦中文在线观看| 精品久久久噜噜噜噜久久图片| 国内精品久久99人妻无码| 先锋影音男人| 电影网一区二区| 4hu最新网址| 亚洲av电影一区| 亲爱的老师9免费观看全集电视剧| 国产精品手机视频| 精品一区二区三区免费毛片爱| 黄色成人在线| 国产伦一区二区三区| 国产在视频线精品视频www666| 亚洲精品一区三区三区在线观看| 欧美一级理论性理论a| 婷婷久久综合九色综合99蜜桃| 欧美激情视频网址| 国产主播性色av福利精品一区| 写真福利片hd在线播放| 久久综合婷婷综合| 劲爆欧美第一页| 欧美做爰性生交视频| 欧美色精品天天在线观看视频| www日韩tube| 成人日韩在线观看| 久久精品一区二区三区四区五区| 中文一区一区三区高中清不卡| 成人18视频在线观看| 久久精品国产综合| 一区二区三区蜜桃网| 日韩影视精品| 丝袜一区二区三区| 成人免费观看在线| 色综合久久天天综合网| 亚洲a一区二区| 操人视频91| 国产精品夜夜夜一区二区三区尤| 免费国产在线精品一区二区三区| 日韩成人三级视频| 亚洲国产成人av| 免费在线看污片| 国产成人三级一区二区在线观看一| 亚州欧美色图|