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

首頁 > 學院 > 開發設計 > 正文

swift 集合類型

2019-11-09 18:48:09
字體:
來源:轉載
供稿:網友

數組

數組的簡單語法

寫swift數組應該遵循像Array<Element> 這樣的形式,其中Element是這個數組中唯一允許存在的數據類型。我們也可以使用像[Element]這樣的簡單語法。盡管兩種形式在功能上是一樣的,但是推薦剪短的那種,而且在本文中都會使用這種形式來使用數組。

創建一個空數組

可以使用構造語法來創建一個由特定數據類型構成的空數組:
var someInts = [Int]()通過構造函數的類型,someInts的值類型被推斷為[Int]。如果代碼上下文中已經提供了類型信息,例如一個函數參數或者一個已經定義好類型的常量或者變量,我們可以使用空數組語句創建一個空數組,它的寫法很簡單:
someInts = []

創建一個帶有默認值的數組

swift中的Array類型還提供一個可以創建特定大小并且所有數據都被默認的構造方法。我們可以把準備加入新數組的數據項數量和適當類型的初始值傳入數組構造函數:
var threeDoubles = Array(repeating:0,count:3)

通過兩個數組相加創建一個數組

可以使用加法操作符來組合兩種已存在的相同類型數組。
  var anotherThreeDoubles = Array(repeating:2,count:3)  var sixDoubles = threeDoubles + anotherThreeDoubles

用數組字面量構造數組

可以使用數組字面量來進行數組構造,這是一種用一個或者多個數值構造數組的簡單方法。數組字面量是一系列由逗號分割并由方括號包含的數值:
var shoppingList:[String] = ["Eggs","Milk"]由于swift的類型推斷機制,還可以這樣寫:
var shoppingList = ["Eggs","Milk"]

訪問和修改數組

可以使用數組的只讀屬性count來獲取數組中的數據項的數量。使用布爾屬性isEmpty作為一個縮寫形式去檢查count屬性是否為0.也可以使用append(_:)方法在數組后面添加新的數據項:
shoppingList.append("flour")除此之外,使用加法賦值運算符也可以直接在數組后面添加一個或者多個擁有相同類型的數據項:
shoppingList += ["baking powder"]可以用下標來改變某個已有索引值對應的數據值:
shoppingList[0] = "six eggs"還可以利用下標一次改變一系列數據值,即使新數據和原有數據的數量不一樣。
shoppingList[1...3] = ["bananas","apples"]調用數組的insert(_:at:)方法來在某個具體的索引值之前添加數據項:
shoppingList.insert("maple", at: 0)可以用remove(at:)方法來移除數組中的某一項。這個方法吧數組在特定索引值中存儲的數據項移除并且返回這個被移除的數據項:
let maple = shoppingList.remove(at: 0)

數組的遍歷

可以用for-in循環來遍歷所有數組中的數據項:
  for item in shoppingList {            PRint(item)        }如果同時需要每個數據項的值和索引值,可以使用enumerated()方法來進行數組遍歷。enumerated()返回一個由每一個數據項索引值和數據值組成的元組??梢园堰@個元組分解成臨時常量或者變量來進行遍歷:
 for (index,value) in shoppingList.enumerated() {            print("Item /(String(index + 1)):/(value)")        }

集合

集合類型語法

swift中的set類型被寫為Set<Element>,這里的Element表示Set中允許存儲的類型,和數組不同的是,集合沒有等價的化簡形式。

創建和構造一個空的集合

可以通過構造器語法創建一個特定類型的空集合:
var letters = Set<Character>()

用數組字面量創建集合

可以使用數組字面量來構造集合,并且可以使用簡化形式寫一個或者多個值作為集合元素。
var favoriteGenres:Set<String> = ["Rock","Classical","Hip hop"]一個Set類型不能從數組字面量中被單獨推斷出來,因此Set類型必須顯示聲明。然而,由于swift的類型推斷功能,如果你想使用一個數組字面量構造一個Set并且該數組字面量中的所有元素類型相同那么你無需寫出Set的具體類型。
var favoriteGenres:Set = ["Rock","Classical","Hip hop"]

訪問和修改一個集合

可以使用只讀屬性count。使用布爾屬性作為一個縮寫形式去檢查count屬性是否為0.可以通過調用Set的insert(_:)方法來添加一個新元素:
favoriteGenres.insert("Jazz")可以通過調用Set的remove(_:)方法去刪除一個元素,如果該值是該Set的一個元素則刪除該元素并且返回被刪除的元素值,否則如果該Set不包含該值,則返回nil。
let removedGenre = favoriteGenres.remove("Rock")使用contains(_:)方法去檢查Set中是否包含一個特定的值:
  if favoriteGenres.contains("Funk") {                    }

遍歷一個集合

可以在一個for-in循環中遍歷一個Set中的所有值。
  for genre in favoriteGenres {                    }swift的Set類型沒有確定的順序,為了按照特定順序來遍歷一個Set中的值可以使用sorted()方法,他將返回一個有序數組,這個數組的元素排列順序由操作符<對元素進行比較的結果來確定。
   for genre in favoriteGenres.sorted() {                    }

集合操作

集合基本操作使用intersection(_:)方法根據兩個集合中都包含的值創建的一個新的集合。使用symmetricDifference(_:)方法根據在一個集合中但不在兩個集合中的值創建一個新的集合。使用union(_:)方法根據兩個集合的值創建一個新的集合。使用subtracting(_:)方法根據不在該集合中的值創建一個新的集合。
 let oddDigits:Set = [1,3,5,7,9]        let evenDigits:Set = [0,2,4,6,8]        let singleDigitPrimeNumers:Set = [2,3,5,7]                oddDigits.union(evenDigits).sorted()        oddDigits.intersection(evenDigits).sorted()        oddDigits.subtracting(singleDigitPrimeNumers).sorted()        oddDigits.symmetricDifference(singleDigitPrimeNumers).sorted()

集合成員關系和相等

使用“是否相等”運算符來判斷兩個集合是否包含全部相同的值。使用isSubset(of:)方法來判斷一個集合中的值是否也被包含另一個集合中。使用isSuperset(of:)方法來判斷一個集合中包含另一個集合中所有的值。使用isStrictSubset(of:)或者isStrictSuperset(of:)方法來判斷一個集合是否是另外一個集合的子集合或者父集合并且兩個集合并不相等。使用isDisjint(with:)方法來判斷兩個集合是否不含有相同的值。
 let houseAnimals:Set = ["?","?"]        let farmAnimals:Set = ["?","?","?","?","?"]        let cityAnimals:Set = ["?","?"]                houseAnimals.isSubset(of: farmAnimals)        farmAnimals.isSuperset(of: houseAnimals)        farmAnimals.isDisjoint(with: cityAnimals

字典

字典類型簡化語法

swift的字典使用Dictionary<Key,Value>定義,其中Key是字典中鍵的數據類型,Value是字典中對應于這些鍵所存儲值的數據類型。我們也可以用[Key:Value]這樣簡化的形式去創建一個字典類型。雖然這兩種形式功能上相同,但是后者是首選。

創建一個空字典

可以像數組一樣使用結構語法創建一個擁有確定類型的空字典:
var namesOfIntegers = [Int: String]()

用字典字面量創建字典

var airports:[String:String] = ["YYZ":"Toronto","DUB":"Dublin"]也可以這樣:
var airports: = ["YYZ":"Toronto","DUB":"Dublin"]因為這個語句中所有的鍵和值都各自擁有相同的數據類型,swift可以推斷出Dictionary<String,String>是airports字典的正確類型。

訪問和修改字典

可以通過字典的方法和屬性來訪問和修改字典,或者通過使用下標語法。可以通過字典的只讀屬性count來獲取某個字典的數據項數量。使用布爾屬性isEmpty作為一個縮寫形式去檢查count屬性是否為0.如果有值存在于更新前,則這個可選值包含了舊值,否則他將會是nil。
 if let oldValue = airports.updateValue("Dublin Airport", forKey: "BUB")        {                    }也可以使用下標語法來在字典中檢索特定鍵對應的值。因為有可能請求的鍵沒有對應的值存在,字典的下標訪問會返回對應值的類型的可選值。如果這個字典包含請求鍵所對應的值,下標會返回一個包含這個存在值的可選值,否則將返回nil。
if let airportName = airports["DUB"]{                    }此外,也可以用來在字典中移除鍵值對。
 if let removedValue = airports.removeValue(forKey: "DUB"){                    }

字典遍歷

可以使用for-in循環來遍歷某個字典中的鍵值對。每一個字典中的數據項都以(key,value)元組形式返回,并且我們可以使用臨時常量或者變量來分解這些元組:
 for (airportCode,airportName) in airports {                    }通過訪問keys或者values屬性,也可以變量字典的鍵或者值:
        for airportCode in airports.keys {                    }                for airportName in airports.values {                    }取自《the swift programming language》中文版
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
福利一区福利二区微拍刺激| 亚洲激情成人网| 欧美激情一级二级| 亚洲老头同性xxxxx| 国产精品成人一区二区三区吃奶| 中文字幕亚洲欧美| 裸体女人亚洲精品一区| 亚洲精品国产suv| 亚洲男人的天堂网站| 国产精品欧美久久久| 国内成人精品视频| 国产一区二区色| 久久久91精品国产| 欧美第一黄网免费网站| 久久久之久亚州精品露出| 久久午夜a级毛片| 日韩精品中文字幕在线观看| 久久久成人精品视频| 亚洲在线视频观看| 国产精品久久久久久久app| 亚洲第一在线视频| 亚洲小视频在线观看| 成人午夜在线观看| 国产精品91久久久久久| 性欧美激情精品| 国产欧美日韩精品丝袜高跟鞋| 欧美一区二区三区……| 精品激情国产视频| 中文字幕欧美日韩在线| 国产精品久久中文| 国产69精品久久久| 亚洲精品电影网在线观看| 91亚洲va在线va天堂va国| 久久久视频免费观看| 亚洲天堂av在线免费观看| 亚洲国产精品高清久久久| 国产精品美女久久久久av超清| 久久久久亚洲精品成人网小说| 国产日韩欧美在线| 久久久爽爽爽美女图片| 欧美性猛交xxxx富婆| 亚洲免费中文字幕| 6080yy精品一区二区三区| 在线免费看av不卡| 欧美一级大片在线免费观看| 日韩av电影院| 日韩国产高清污视频在线观看| 98视频在线噜噜噜国产| 裸体女人亚洲精品一区| 日韩在线免费观看视频| 日韩电影中文字幕在线观看| 亚洲一二三在线| 日韩av三级在线观看| 8050国产精品久久久久久| 搡老女人一区二区三区视频tv| 亚洲人成电影在线播放| 91人人爽人人爽人人精88v| 精品视频—区二区三区免费| 国产成人在线亚洲欧美| 欧美多人乱p欧美4p久久| 最好看的2019年中文视频| 日韩在线免费高清视频| 亚洲精品国产免费| 亚洲影视九九影院在线观看| 日韩亚洲欧美中文高清在线| 2018日韩中文字幕| 欧美夫妻性视频| 久久精品精品电影网| 国产亚洲aⅴaaaaaa毛片| 日韩在线观看免费| 欧美日韩国产麻豆| 91国内揄拍国内精品对白| 精品高清美女精品国产区| 亚洲成人av在线| 国产精品成人一区二区| 2021国产精品视频| 久久伊人免费视频| 97福利一区二区| 国产亚洲精品激情久久| 国产a∨精品一区二区三区不卡| 亚洲一区二区久久久久久久| 青青青国产精品一区二区| 欧美韩日一区二区| 亚洲精品日产aⅴ| 精品一区电影国产| 欧美大成色www永久网站婷| 久久99精品久久久久久琪琪| 成人免费视频网| 国产精品女人网站| 亚洲一区二区三区视频播放| 91天堂在线观看| 欧美大人香蕉在线| 日韩国产中文字幕| 成人午夜在线观看| 中文字幕精品在线视频| 亚洲国产精品免费| 久久久久久久久久久网站| 亚洲人成网站777色婷婷| 精品呦交小u女在线| 久久天天躁狠狠躁夜夜躁| 日韩视频一区在线| 欧美午夜激情在线| 亚洲天堂免费在线| 日韩精品中文字| 亚洲精品aⅴ中文字幕乱码| 国产日韩精品在线观看| 国产精品视频播放| 亚洲国产精品99久久| 国产精品精品视频一区二区三区| 伊人伊成久久人综合网站| 日韩欧美中文字幕在线观看| 国模吧一区二区| 91国自产精品中文字幕亚洲| 久久人人97超碰精品888| 97视频在线观看亚洲| 国产精品爱久久久久久久| 精品国产乱码久久久久久天美| 亚洲国产日韩精品在线| 国产精品劲爆视频| 91久久在线观看| 亚洲视频在线视频| 欧美成人精品一区二区| 国产精品草莓在线免费观看| 国产一区二区三区欧美| 人体精品一二三区| 成人精品在线视频| 九九视频直播综合网| 欧美成人免费全部| 欧美日韩国产区| 国产精品美女主播在线观看纯欲| 精品福利在线观看| 日韩欧美成人区| 国产精品网红直播| 中文字幕欧美国内| 第一福利永久视频精品| 久久久久久这里只有精品| 国产欧美亚洲精品| 日韩av免费看网站| 91久久综合亚洲鲁鲁五月天| 欧美激情免费在线| 欧美日韩亚洲视频| 国产一区二区三区视频免费| 国产一区二区三区在线观看网站| 亚洲二区在线播放视频| 中文字幕亚洲情99在线| 亚洲摸下面视频| 国产日韩综合一区二区性色av| 欧美激情在线一区| 精品国内自产拍在线观看| 狠狠色狠狠色综合日日五| 日韩美女视频中文字幕| 亚洲aⅴ日韩av电影在线观看| 欧洲成人在线视频| 国产精品久久视频| 欧美成人精品不卡视频在线观看| 91天堂在线视频| 欧美日韩中文在线观看| 欧美精品在线第一页| 日韩av免费在线观看| 亚洲在线免费看| 日韩欧美成人区| 欧美视频中文字幕在线| 亚洲石原莉奈一区二区在线观看| 亚洲欧美日韩精品|