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

首頁 > 編程 > Swift > 正文

Swift心得筆記之集合類型

2020-03-09 17:50:50
字體:
供稿:網(wǎng)友
本文為大家講解的是swift語言中的集合類型數(shù)據(jù),這是swift開發(fā)必須掌握的知識點,感興趣的同學參考下。
 

數(shù)組

重復值的初始化

除了普通的初始化方法,我們可以通過 init(count: Int, repeatedValue: T) 來初始化一個數(shù)組并填充上重復的值:

 

復制代碼代碼如下:

// [0.0,0.0,0.0]
var threeDoubles = [Double](count:3,repeatedValue:0.0)

 

帶索引值的遍歷

我們可以用 for in 遍歷數(shù)組,如果想要 index 的話,可以用 enumerate<Seq : SequenceType>(base: Seq) :

 

復制代碼代碼如下:

let arr = ["a","b"]
for (index, value) in enumerate(arr) {
    println("/(index):/(value)")
}
// 0:a
// 1:b

 

賦值與拷貝

Swift 中數(shù)組和字典均是結(jié)構(gòu)體的形式實現(xiàn)的,和 NSArray 那一套不太一樣,所以賦值的時候其實是給了一份拷貝:

 

復制代碼代碼如下:

let hd = Resolution(width: 1920, height: 1080)
var cinema = hd
cinema.height = 233
cinema  // 1920 233
hd      // 1920 1080

 

高階函數(shù)

Swift 有一些 Higher Order Functions :map、filter和reduce。使用得當?shù)脑捒梢允∪ズ芏嗖槐匾拇a。

map

map 可以把一個數(shù)組按照一定的規(guī)則轉(zhuǎn)換成另一個數(shù)組,定義如下:

 

復制代碼代碼如下:

func map<U>(transform: (T) -> U) -> U[]

 

也就是說它接受一個函數(shù)叫做 transform ,然后這個函數(shù)可以把 T 類型的轉(zhuǎn)換成 U 類型的并返回 (也就是 (T) -> U),最終 map 返回的是 U 類型的集合。

下面的表達式更有助于理解:

 

復制代碼代碼如下:

[ x1, x2, ... , xn].map(f) -> [f(x1), f(x2), ... , f(xn)]

 

如果用 for in 來實現(xiàn),則需要這樣:

 

復制代碼代碼如下:

var newArray : Array<T> = []
for item in oldArray {
    newArray += f(item)
}

 

舉個例子,我們可以這樣把價格數(shù)組中的數(shù)字前面都加上 ¥ 符號:

 

復制代碼代碼如下:

var oldArray = [10,20,45,32]
var newArray = oldArray.map({money in "¥/(money)"})
println(newArray) // [¥10, ¥20, ¥45, ¥32]

 

如果你覺得 money in 也有點多余的話可以用 $0 :

 

復制代碼代碼如下:

newArray = oldArray.map({"/($0)€"})

 

filter

方法如其名, filter 起到的就是篩選的功能,參數(shù)是一個用來判斷是否篩除的篩選閉包,定義如下:

 

復制代碼代碼如下:

func filter(includeElement: (T) -> Bool) -> [T]

 

還是舉個例子說明一下。首先先看下傳統(tǒng)的 for in 實現(xiàn)的方法:

 

復制代碼代碼如下:

var oldArray = [10,20,45,32]
var filteredArray : Array<Int> = []
for money in oldArray {
    if (money > 30) {
        filteredArray += money
    }
}
println(filteredArray)

 

奇怪的是這里的代碼編譯不通過:

 

復制代碼代碼如下:

Playground execution failed: <EXPR>:15:9: error: 'Array<Int>' is not identical to 'UInt8'
        filteredArray += money

 

發(fā)現(xiàn)原來是 += 符號不能用于 append ,只能用于 combine ,在外面包個 [] 即可:

 

復制代碼代碼如下:

var oldArray = [10,20,45,32]
var filteredArray : Array<Int> = []
for money in oldArray {
    if (money > 30) {
        filteredArray += [money]
    }
}
println(filteredArray) // [45, 32]

 

(靠。。居然忘了貼 filter 的用法,寫到后面才發(fā)現(xiàn)。。)

用 filter 可以這樣實現(xiàn):

 

復制代碼代碼如下:

var oldArray = [10,20,45,32]
var filteredArray  = oldArray.filter({
    return $0 > 30
})
println(filteredArray) // [45, 32]

 

你真的好短?。?/p>

reduce

reduce 函數(shù)解決了把數(shù)組中的值整合到某個獨立對象的問題。定義如下:

 

復制代碼代碼如下:

func reduce<U>(initial: U, combine: (U, T) -> U) -> U

 

好吧看起來略抽象。我們還是從 for in 開始。比如我們要把數(shù)組中的值都加起來放到 sum 里,那么傳統(tǒng)做法是:

 

復制代碼代碼如下:

var oldArray = [10,20,45,32]
var sum = 0
for money in oldArray {
    sum = sum + money
}
println(sum) // 107

 

reduce 有兩個參數(shù),一個是初始化的值,另一個是一個閉包,閉包有兩個輸入的參數(shù),一個是原始值,一個是新進來的值,返回的新值也就是下一輪循環(huán)中的舊值。寫幾個小例子試一下:

 

復制代碼代碼如下:

var oldArray = [10,20,45,32]
var sum = 0
sum = oldArray.reduce(0,{$0 + $1}) // 0+10+20+45+32 = 107
sum = oldArray.reduce(1,{$0 + $1}) // 1+10+20+45+32 = 108
sum = oldArray.reduce(5,{$0 * $1}) // 5*10*20*45*32 = 1440000
sum = oldArray.reduce(0,+) // 0+10+20+45+32 = 107
println(sum)

 

大概就是這些。

map 用來解包可選類型

我們在解包可選類型的時候,通常會這么做:

 

復制代碼代碼如下:

func increment(someNumber: Int?) -> Int? {
    if let number = someNumber {
        return number + 1
    } else {
        return nil
    }
}
increment(5)   // Some 6
increment(nil) // nil

 

我們也可以用 map 來實現(xiàn):

 

復制代碼代碼如下:

func increment(someNumber: Int?) -> Int? {
    return someNumber.map { number in number + 1 }
}

 

increment(5)   // Some 6
increment(nil) // nil

 

包括其他可選類型也是可行的,比如 String :

 

復制代碼代碼如下:

func hello(someName: String?) -> String? {
    return someName.map { name in "Hello, /(name)"}
}
hello("NatashaTheRobot") // Some "Hello, NatashaTheRobot"
hello(nil) // nil

 

再搭配上 ?? 符號,嗯基本夠用了:

 

復制代碼代碼如下:

func hello(someName: String?) -> String {
    return someName.map { name in "Hello, /(name)" } ?? "Hello world!"
}

 

hello("NatashaTheRobot") // "Hello, NatashaTheRobot"
hello(nil)               // "Hello world!"

 

擴展

數(shù)組和字典十分常用,而官方的方法功能有限。我們可以學習ExSwift 中 Array.swift 的內(nèi)容,給 Array 添加一些 Extension。

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。



注:相關(guān)教程知識閱讀請移步到swift教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
黄色的电影在线-骚虎影院-骚虎视频| 亚洲九九精品| 91精品国产91久久久久久久久| 亚洲精品自产拍在线观看app| 99久久精品国产观看| 美女隐私在线观看| 欧美小视频在线观看| 亚洲黄色av片| 亚洲一区二区免费在线观看| 超碰色偷偷男人的天堂| 一级黄色免费网站| 久久高清国产| 麻豆高清免费国产一区| 国产美女精品免费电影| 国产一级黄色录像片| 日本精品一区在线| 亚洲一区www| 久久一区视频| av av在线| 8x8ⅹ拨牐拨牐拨牐在线观看| 9191在线观看| 欧美激情一区不卡| 91大学生片黄在线观看| 3d成人动漫在线| 日韩一区二区视频| 精精国产xxxx视频在线| 激情av综合| 国内激情视频在线观看| 亚洲精品久久区二区三区蜜桃臀| 欧美白嫩的18sex少妇| 国产一区二区自拍| av在线看片| 中文字幕有码av| 91丨九色丨蝌蚪丨对白| 国产中文第一页| 国产精品久久毛片av大全日韩| 国产精品欧美综合在线| 亚洲国内精品视频| 久久久亚洲综合| 99在线观看免费| 欧美一卡二卡在线| 四虎激情影院| 97se亚洲国产综合自在线| 好吊妞无缓冲视频观看| 亚洲精品欧美二区三区中文字幕| 国产日韩欧美久久| 欧美网站免费观看| 国产男女无遮挡猛进猛出| 中文字幕 国产| 插插插亚洲综合网| 少妇久久久久| 白白色在线发布| 日韩极品少妇| 欧美黄色激情视频| 中文字幕超清在线免费观看| 国外亚洲成av人片在线观看| 中文在线免费一区三区高中清不卡| 91av免费看| 最新日本中文字幕| jizz内谢中国亚洲jizz| 欧美成人欧美edvon| 91看片在线播放| 色屁屁草草影院ccyy.com| 亚洲日韩欧美一区二区在线| 成人妖精视频yjsp地址| 日本免费一区二区三区等视频| 日本激情综合网| 中文字幕精品—区二区四季| 国产www.大片在线| 国产日韩在线免费观看| 欧美大荫蒂xxx| 视频一区视频二区在线观看| 日韩电影中文字幕在线观看| 久久久久久久久国产精品| 国产一区二区三区在线观看精品| 色婷婷综合视频| 国产农村妇女精品久久| 欧美重口另类| 韩日精品视频| 在线精品亚洲欧美日韩国产| 视频一区在线| 亚洲桃花岛网站| 亚洲亚裔videos黑人hd| 亚洲免费在线| 成人资源在线播放| 在线观看日产精品| 午夜精品久久久久久久第一页按摩| 北条麻妃在线视频| 最近2019中文字幕大全第二页| 无码h黄肉3d动漫在线观看| 日本少妇激三级做爰在线| 免费在线日本| 一区二区三区自拍| 丁香六月综合| 黄色片网站在线免费观看| 亚洲亚洲精品三区日韩精品在线视频| 午夜老司机在线观看| 国产a区久久久| 激情欧美丁香| 亚洲天堂色网站| av在线导航| 国产色产综合色产在线视频| 欧美另类精品xxxx孕妇| caoporm免费视频在线| 橘梨纱av一区二区三区在线观看| 欧美日韩国产综合一区二区三区| 97国产成人无码精品久久久| 污片免费在线观看| 在线综合视频播放| 夜夜爽久久精品91| 中文字幕在线导航| 成人影院在线免费观看| 欧美成人午夜激情在线| 伊人色综合久久久天天蜜桃| 夜鲁很鲁在线视频| 日韩欧美一区二区在线观看| 日韩成人av网| 国产成a人亚洲精v品无码| 成人欧美一区二区| 中文在线播放| 日韩一区二区免费在线电影| 亚洲精品免费在线观看视频| 影音先锋在线中文| 成人av电影在线网| 性一交一乱一精一晶| av资源在线看片| 一区二区三区在线观看av| 中文字幕av影视| 福利h视频在线| 欧美日韩另类字幕中文| 中文字幕人妻熟女人妻洋洋| 欧美日韩免费观看中文| 欧美做受喷浆在线观看| 免费毛片一区二区三区| 色综合视频一区二区三区44| av永久不卡| 欧美在线观看视频网站| 成人黄色电影在线| 国产日韩欧美一区二区三区在线观看| 欧美一级爽aaaaa大片| 亚洲精品国产suv一区| 亚洲视频一二三| 国产一级片免费看| 免费播放片a高清在线观看| 欧美肥婆姓交大片| 青青草视频社区| 亚洲熟妇av一区二区三区| 黄色小视频在线观看| 亚洲免费在线电影| 开心快乐六月丁香婷婷| 亚洲一区二区三区国产| 日本中文不卡| 一本大道一区二区三区| 毛片女人与拘交视频| 欧日韩免费视频| 青娱乐精品在线视频| 少妇又紧又色又爽又刺激视频| 视频一区中文字幕国产| jizz日本在线播放| 18黄暴禁片在线观看| 日韩欧美在线一区二区三区| 亚洲精品二区三区| 91精品国产电影| 天堂成人在线| 成人午夜免费在线视频| jizz内谢中国亚洲jizz| 国产精品99久久精品| 涩涩av在线| 欧美国产一区视频在线观看| 国产美女自拍| 欧美日韩中字一区| 色综合久久久久综合体| 九九视频在线免费观看| 韩国一级黄色录像| 成人av片网址| 国产午夜精品一区| 先锋音影av资源中文网| 欧美成a人免费观看久久| 欧美在线制服丝袜| 日韩国产精品久久| 国产一区二区在线免费观看| 天堂av在线播放| 欧美性生交大片免网| 亚洲精品国产av| 亚洲特级黄色片| 99这里只有精品视频| 日日摸夜夜夜夜夜添| 人妻丰满熟妇av无码区hd| 欧美成人午夜激情| 国产国产一区| 4438欧美| 色综合99久久久无码国产精品| 中文字幕一区日韩精品欧美| 欧美性天天影院| 成人av免费播放| 哺乳一区二区三区中文视频| www.就去干.com| √新版天堂资源在线资源| av国产在线观看| 欧美三级午夜理伦三级在线观看| 91jq激情在线观看| 91禁男男在线观看| 黄色毛片在线观看| 久久婷婷开心| 久久九九热视频| 色先锋av资源| 九九九在线视频| 亚洲国产视频a| 久久精品影视伊人网| 国产精品视频一区二区久久| 护士精品一区二区三区| 欧美最猛性xxxxxhd| 久久久久国产一区二区三区四区| 91传媒久久久| 99精品视频一区二区三区| 91麻豆精品91久久久久同性| 日韩在线观看视频一区二区三区| 2欧美一区二区三区在线观看视频| 性生活黄色大片| 亚洲第一天堂| 久久精品国产亚洲av香蕉| 亚洲激情啪啪| а天堂中文在线官网| 欧美丰满熟妇bbb久久久| 欧美aaaaaa| 少妇搡bbbb搡bbb搡打电话| av免费不卡国产观看| 日韩欧美视频专区| 亚洲国产精品久久久天堂| 欧美三级日韩在线| 99热在线观看免费| 人妻无码一区二区三区四区| 宅男网站在线免费观看| 成人在线观看91| xxav国产精品美女主播| 加勒比av一区二区| 亚洲精品高清在线观看| 欧美日韩国产一区精品一区| 日本激情视频网| 午夜精品一区二区三区三上悠亚| 国内外成人免费激情在线视频网站| 男人插女人视频在线观看| 黄色成人在线观看| 婷婷在线观看视频| 91精品动漫在线观看| gogo亚洲国模私拍人体| 68精品国产免费久久久久久婷婷| wwwwxxxx国产| 欧美综合在线播放| 日本不卡在线视频| 日本熟妇人妻xxxx| 亚洲免费成人av| 午夜欧美不卡精品aaaaa| 91嫩草国产线观看亚洲一区二区| 国产精品一区二区三区精品| 91精品国产综合久久久蜜臀九色| 在线观看av网页| 国产精品一区二区久久国产| 成人黄色av网| 无码视频一区二区三区| 在线免费观看日本一区| 全亚洲最色的网站在线观看| 中文字幕一区二区三区在线播放| 高潮毛片在线观看| 亚洲精品一区二区三区在线观看| 国产va在线| 亚洲激情六月丁香| 操欧美女人视频| 免费成人美女在线观看.| 亚洲日韩中文字幕一区| а√最新版在线天堂| 国产精品视频一区二区三区经| gogo高清免费视频| 国产大尺度在线观看| 亚洲少妇中出一区| 在线免费观看黄色片| 国产一区美女| 欧洲一区二区在线观看| 手机福利在线| 日本人妻伦在线中文字幕| 中国毛片直接看| 五月激情六月婷婷| 91青青草免费在线看| 日漫免费在线观看网站| 国产综合图区| 欧美日韩一区二区三区视频播放| 欧美人与性禽动交精品| 992kp免费看片| 欧美中文高清| 992在线观看| 麻豆91蜜桃| 久久精品国内一区二区三区| 亚洲v日韩v综合v精品v| 国产一区国产二区国产三区| 欧美日韩午夜在线视频| 男人的天堂免费在线视频| 国产亚洲欧洲高清一区| 又色又爽又黄无遮挡的免费视频| 亚洲人成伊人成综合网久久久| 欧美电影免费观看高清完整| 夜夜爽夜夜爽精品视频| 日本视频中文字幕一区二区三区| 成人一区二区av| av成人免费观看| 国产精品wwww| 在线视频中文亚洲| 欧美精品一区二区在线播放| 欧美久久久久久久久| av资源免费看| 99视频在线观看地址| 日本最新高清不卡中文字幕| 一区二区中文字| 国产精品亚洲第五区在线| 国产视频一二三区| 日本在线中文字幕一区二区三区| 91在线观看欧美日韩| 男人的天堂av网站| 国产精品99久久久久久似苏梦涵| h在线观看视频| 亚洲制服欧美中文字幕中文字幕| 色视频成人在线观看免| 日本不卡视频| 日韩精品一区在线观看| 印度美女freesex性hd| 亚洲天堂视频网| 三级网站在线播放| 日韩欧美一区三区| 婷婷一区二区三区|