麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Swift > 正文

Swift學習筆記之元組(tuples)

2020-03-09 17:45:15
字體:
來源:轉載
供稿:網友

元組

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

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

let firstHighScore = ("Mary", 9001)

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

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

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

從元組中讀元素

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

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

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

let (firstName, firstScore) = firstHighScoreprintln(firstName) // Maryprintln(firstScore) // 9001

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

let (_, firstScore) = firstHighScoreprintln(firstScore) // 9001

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

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

將元組作為函數(shù)返回值

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

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

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

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

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

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")}

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

元組的訪問級別

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

元組是值類型

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

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

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

總結

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


注:相關教程知識閱讀請移步到swift教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 日本一区二区久久 | 久草在线观看首页 | 日韩视频区 | 热re91久久精品国产99热 | 干色视频 | 一级国产精品一级国产精品片 | 看免费一级毛片 | 久久情爱网 | 精品久久久久久久久亚洲 | 男女一边摸一边做羞羞视频免费 | 国产毛毛片一区二区三区四区 | 天堂福利电影 | 在线观看免费视频麻豆 | 欧美亚洲一区二区三区四区 | 日本在线观看一区二区 | 日日狠狠久久 | 免费在线观看午夜视频 | 国产一区二区精品免费 | 羞羞漫画无遮挡观看 | 国产精品一区网站 | 成人免费观看av | 欧美成人精品一区二区男人小说 | 国产18成人免费视频 | 国产伦久视频免费观看视频 | 欧美城网站地址 | 红杏亚洲影院一区二区三区 | 亚洲网站在线播放 | 久久精品一区二区三区不卡牛牛 | 久久久久久久久久久国产精品 | 9797色| 亚洲第五色综合网 | 日产精品久久久一区二区开放时间 | 国产91久久久久 | 在线观看中文字幕av | 青青草成人免费视频在线 | 久久久一区二区 | 久久综合精品视频 | 中文字幕精品久久 | 黄色aaa视频| 亚洲第一色片 | 国产成人观看 |