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

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

swift 集合類型

2019-11-09 17:49:15
字體:
來源:轉載
供稿:網友

數組

數組的簡單語法

寫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
2019中文在线观看| 自拍偷拍亚洲区| 中文字幕精品www乱入免费视频| 国产脚交av在线一区二区| 欧美精品18videos性欧美| 色妞在线综合亚洲欧美| 欧美日韩一区二区三区| 亚洲人成电影网| 欧美激情视频一区二区| 大胆人体色综合| 亚洲人精选亚洲人成在线| 欧美丰满少妇xxxxx| 91精品国产综合久久久久久久久| 欧洲成人午夜免费大片| 日韩亚洲欧美成人| 色综合天天综合网国产成人网| 美日韩精品免费观看视频| 91精品国产免费久久久久久| 亚洲大胆人体在线| 亚洲xxx自由成熟| 久久艳片www.17c.com| 亚洲三级免费看| 97久久国产精品| 主播福利视频一区| 狠狠躁夜夜躁人人爽超碰91| 国产在线观看一区二区三区| 欧美日韩国产第一页| 国产精品欧美在线| 2019日本中文字幕| 亚洲xxxx做受欧美| 日韩激情视频在线| 欧美日本亚洲视频| 亚洲福利视频专区| 97精品国产97久久久久久春色| 亚洲午夜未满十八勿入免费观看全集| 欧美老少配视频| 按摩亚洲人久久| 精品一区二区三区电影| 最新的欧美黄色| 亚洲网在线观看| 性欧美激情精品| 亚洲女人天堂av| 日韩亚洲精品视频| 日韩精品极品视频| 欧美精品国产精品日韩精品| 91日本视频在线| 日韩视频第一页| 91精品国产乱码久久久久久蜜臀| 欧美成年人视频| 国产一区二区三区四区福利| 午夜精品久久久久久久久久久久久| 日韩av免费观影| 国产性猛交xxxx免费看久久| 日本久久久久久久久| 九九视频直播综合网| 69国产精品成人在线播放| 亚洲精品视频二区| 91成人国产在线观看| 久久婷婷国产麻豆91天堂| 中文字幕精品一区久久久久| 日韩欧美在线视频日韩欧美在线视频| 久久国产精品久久国产精品| 亚洲天堂免费在线| 色综合亚洲精品激情狠狠| 成人国产精品一区二区| 国产日产欧美精品| 欧美性受xxxx白人性爽| 91免费福利视频| 欧美电影免费观看电视剧大全| 欧美日韩人人澡狠狠躁视频| 91色精品视频在线| 国产原创欧美精品| 伊人亚洲福利一区二区三区| 国产自产女人91一区在线观看| 亚洲永久在线观看| 日韩成人小视频| 久久国产精品久久国产精品| 国产日本欧美视频| 亚洲国产精品999| 久久久久国色av免费观看性色| 国产在线久久久| 亚洲精品98久久久久久中文字幕| 久久躁日日躁aaaaxxxx| 国产精品久久久久久久一区探花| 国产精品自产拍在线观看中文| 亚洲japanese制服美女| 91精品啪aⅴ在线观看国产| 国产精品偷伦视频免费观看国产| 奇米成人av国产一区二区三区| 国产精品草莓在线免费观看| 欧美激情视频网| 久久久亚洲影院你懂的| 亚洲欧洲xxxx| 国产精品极品美女粉嫩高清在线| 欧美精品做受xxx性少妇| 欧美在线亚洲一区| 久久人人爽人人爽人人片av高请| 午夜精品国产精品大乳美女| 亚洲精品电影网| 91在线视频免费| 国产精品一二三在线| 久久久精品电影| 国产精品美女午夜av| 热草久综合在线| 欧洲美女7788成人免费视频| 久操成人在线视频| 国产精品久久一区主播| 国产精品丝袜一区二区三区| 国产精品人人做人人爽| 精品国产精品自拍| 不卡av电影在线观看| 国产精品美女免费视频| 欧美激情精品久久久久久免费印度| 国产性猛交xxxx免费看久久| 亚洲专区中文字幕| 国产视频在线一区二区| 日本在线观看天堂男亚洲| 亚洲国产99精品国自产| 精品亚洲国产成av人片传媒| 日韩av在线免费观看| 欧美一区在线直播| 日韩风俗一区 二区| 国产午夜精品一区二区三区| 91在线看www| 欧美极品第一页| 亚洲天堂网站在线观看视频| 日韩精品免费在线视频| 久久亚洲春色中文字幕| 精品亚洲永久免费精品| www.欧美精品| 国产精品揄拍一区二区| 国产v综合v亚洲欧美久久| 一本大道香蕉久在线播放29| 精品性高朝久久久久久久| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲人成五月天| 另类视频在线观看| 日韩精品中文字幕久久臀| 国内精品久久久久久久久| 欧美日韩第一页| 色综合久久中文字幕综合网小说| 久久久最新网址| 欧美日韩第一页| 九九热精品视频国产| 国产日韩在线免费| 中文字幕日韩在线播放| 伊是香蕉大人久久| 国产日韩欧美91| 一区国产精品视频| 国产精品男女猛烈高潮激情| 欧美猛男性生活免费| 欧美极品美女视频网站在线观看免费| 亚洲色图国产精品| 国产精品欧美在线| 国产精品久久久久久久久借妻| 久久亚洲精品毛片| 国产一区二区三区丝袜| 亚洲女同性videos| 97视频在线免费观看| 国产精品白丝av嫩草影院| 久久久久久69| www国产亚洲精品久久网站| 91久久国产综合久久91精品网站| 亚洲va码欧洲m码|