pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

Swift學習筆記之元組(tuples)

這篇文章主要給大家介紹了Swift中元組(tuples)的相關資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。

元組

元組(tuples)是由其它類型組合而成的類型。元組可能包含零或多個類型,比如 字符串、整數、字符、布爾以及其它元組。同時請注意,元組是值傳遞,而不是引用。

在Swift中創建元組的方式很簡單,元組類型是用括號包圍,由一個逗號分隔的零個或多個類型的列表。例如:


let firstHighScore = ("Mary", 9001)

另外,在創建元組時你還可以給元組中的元素命名:


let secondHighScore = (name: "James", score: 4096)

以上就是創建元組的兩種方式,非常簡單和簡潔。你不需要像創建struct一樣寫出它的結構和內部屬性,也不需要像創建class一樣要寫初始化方法。你只需要把你想用的、任何類型的值放在圓括號內,用逗號隔開即可。如果你愿意你還可以給每個元素命名,提高元組使用效率。

從元組中讀元素

如果我們沒有給元組的元素命名,我們可以用點語法,通過定義好的元組變量或常量獲取它的第1個到第n個元素:


let firstHighScore = ("Mary", 9001)
println(firstHighScore.0) // Mary
println(firstHighScore.1) // 9001

如果你覺得上述這種方法會造成語義的不明確,那么我們還可以將元組賦值給一個帶有元素名稱的元組(元素名稱個數要對應):


let (firstName, firstScore) = firstHighScore
println(firstName) // Mary
println(firstScore) // 9001

如果你只需要一部分元組值,分解的時候可以把要忽略的部分用下劃線(_)標記:


let (_, firstScore) = firstHighScore
println(firstScore) // 9001

如果我們已經給元組中的元素命名了名稱,那么我們可以這樣寫:


let secondHighScore = (name: "James", score: 4096)
println(secondHighScore.name) // James
println(secondHighScore.score) // 4096

將元組作為函數返回值

當你想讓一個函數能夠返回多種類型時,這是元組的最佳使用場景。

我們可以將元組作為函數的返回值,下面這個函數的返回值就是我們之前定義過的secondHighScore元組:


func getAHighScore() -> (name: String, score: Int) {
 let theName = "Patricia"
 let theScore = 3894
 return (theName, theScore)
}

為什么說上述函數的返回值是secondHighScore元組呢?因為getAHighScore函數返回的元組元素個數、元素名稱、元素類型均和secondHighScore相同。

其實將元組作為函數的返回值時也可以不必對元素進行命名,只要你明白每個元素代表的含義即可:


func getAHighScore() -> (String, Int) {
 let theName = "Patricia"
 let theScore = 3894
 return (theName, theScore)
}

如果你不確定返回的元組一定不為nil,那么你可以返回一個可選的元組類型:


func maybeGetHighScore() -> (String, Int)? {
 return nil
}

因為是可選的元組類型,所以當返回的元組不為nil時,你需要對元組進行解包:


if let possibleScore = maybeGetHighScore() {
 possibleScore.0
 possibleScore.1
} else {
 println("Nothing Here")
}

注意:當你定義了一個沒有返回值的函數時,其實該函數是返回一個空的元組()。

元組的訪問級別

元組的訪問級別取決于它包含的元素。比如元組里的元素都是private級別的,那么該元組也是private級別的。但這里有一個遵循最小的原則,也就是說如果一個元組中有兩個元素,一個為private級別,另一個為public級別,那么該元組遵循最小原則,它的訪問級別為private。

元組是值類型

關于值類型和引用類型的知識這里不再累贅,我們通過一個代碼示例來看看元組是哪種類型:


var someScore = ("John", 55)
var anotherScore = someScore
anotherScore.0 = "Robert"
println(anotherScore.0) //Outputs: "Robert"
println(someScore.0)  //Outputs: "John"

通過上述的代碼示例可以看出,我把someScore元組賦值給了anotherScore,然后修改了anotherScore的第1個元素的值,最后分別打印了someScore和anotherScore第1個元素的值。someScore元組第一個元素的值為Robert,而anotherScore元組第一個元素的值仍然為John。由此可見元組是值類型。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對html5模板網的支持。

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

這篇文章主要給大家介紹了關于RxSwift學習教程之類型對象Subject的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著
這篇文章主要給大家介紹了關于RxSwift學習教程之Observable的相關資料,文中詳細的給大家介紹了關于新建Observable、訂閱Observable和取消訂閱并消除內存泄漏等相關的內容,需要的朋友可以
RxSwift是Swift函數響應式編程的一個開源庫,由Github的ReactiveX組織開發,維護。下面這篇文章主要給大家介紹了關于RxSwift學習之基礎篇的相關資料,文中通過示例代碼介紹的非常詳細,需
這篇文章主要為大家詳細介紹了Swift4.0 Array數組的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
CATransition動畫主要在過渡時使用,比如兩個頁面層級改變的時候添加一個轉場效果。CATransition分為兩類,一類是公開的動畫效果,一類是非公開的動畫效果。這篇文章主要給大家介紹了
近日,iPhone X的發布在人們群眾引起了很大的轟動,下面這篇文章主要給大家介紹了關于利用Swift如何判斷iPhone X機型的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友們下面
主站蜘蛛池模板: 不锈钢复合板|钛复合板|金属复合板|南钢集团安徽金元素复合材料有限公司-官网 | 婚博会2024时间表_婚博会门票领取_婚博会地址-婚博会官网 | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 膜片万向弹性联轴器-冲压铸造模具「沧州昌运模具」 | 电动高尔夫球车|电动观光车|电动巡逻车|电动越野车厂家-绿友机械集团股份有限公司 | 碳刷_刷握_集电环_恒压簧_电刷厂家-上海丹臻机电科技有限公司 | 小型单室真空包装机,食品单室真空包装机-百科 | 钢板仓,大型钢板仓,钢板库,大型钢板库,粉煤灰钢板仓,螺旋钢板仓,螺旋卷板仓,骨料钢板仓 | 云阳人才网_云阳招聘网_云阳人才市场_云阳人事人才网_云阳人家招聘网_云阳最新招聘信息 | 土壤养分检测仪_肥料养分检测仪_土壤水分检测仪-山东莱恩德仪器 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | 康明斯发电机,上柴柴油发电机,玉柴柴油发电机组_海南重康电力官网 | 天津试验仪器-电液伺服万能材料试验机,恒温恒湿标准养护箱,水泥恒应力压力试验机-天津鑫高伟业科技有限公司 | 化工ERP软件_化工新材料ERP系统_化工新材料MES软件_MES系统-广东顺景软件科技有限公司 | 净化板-洁净板-净化板价格-净化板生产厂家-山东鸿星新材料科技股份有限公司 | 电缆接头-防爆电缆接头-格兰头-金属电缆接头-防爆填料函 | 华溶溶出仪-Memmert稳定箱-上海协烁仪器科技有限公司 | 数显恒温培养摇床-卧式/台式恒温培养摇床|朗越仪器 | 精密机械零件加工_CNC加工_精密加工_数控车床加工_精密机械加工_机械零部件加工厂 | 北京晚会活动策划|北京节目录制后期剪辑|北京演播厅出租租赁-北京龙视星光文化传媒有限公司 | ★塑料拖链__工程拖链__电缆拖链__钢制拖链 - 【上海闵彬】 | 南京雕塑制作厂家-不锈钢雕塑制作-玻璃钢雕塑制作-先登雕塑厂 | IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 | 重庆LED显示屏_显示屏安装公司_重庆LED显示屏批发-彩光科技公司 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | 岸电电源-60HZ变频电源-大功率变频电源-济南诚雅电子科技有限公司 | T恤衫定做,企业文化衫制作订做,广告T恤POLO衫定制厂家[源头工厂]-【汉诚T恤定制网】 | 大型低温冷却液循环泵-低温水槽冷阱「厂家品牌」京华仪器_京华仪器 | 啤酒设备-小型啤酒设备-啤酒厂设备-济南中酿机械设备有限公司 | 槽钢冲孔机,槽钢三面冲,带钢冲孔机-山东兴田阳光智能装备股份有限公司 | 天津力值检测-天津管道检测-天津天诚工程检测技术有限公司 | 扬州汇丰仪表有限公司 | 高温链条油|高温润滑脂|轴承润滑脂|机器人保养用油|干膜润滑剂-东莞卓越化学 | 聚天冬氨酸,亚氨基二琥珀酸四钠,PASP,IDS - 远联化工 | 工业风机_环保空调_冷风机_工厂车间厂房通风降温设备旺成服务平台 | 悬浮拼装地板_幼儿园_篮球场_悬浮拼接地板-山东悬浮拼装地板厂家 | 翅片管散热器价格_钢制暖气片报价_钢制板式散热器厂家「河北冀春暖气片有限公司」 | 武汉高温老化房,恒温恒湿试验箱,冷热冲击试验箱-武汉安德信检测设备有限公司 | 流水线电子称-钰恒-上下限报警电子秤-上海宿衡实业有限公司 | 冷却塔厂家_冷却塔维修_冷却塔改造_凉水塔配件填料公司- 广东康明节能空调有限公司 | 双舌接地线-PC68数字式高阻计-ZC36|苏海百科 |