最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Swift學(xué)習(xí)筆記之元組(tuples)

 更新時(shí)間:2017年05月21日 10:07:46   作者:sunjinshuai  
這篇文章主要給大家介紹了Swift中元組(tuples)的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。

元組

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

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

let firstHighScore = ("Mary", 9001)

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

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

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

從元組中讀元素

如果我們沒(méi)有給元組的元素命名,我們可以用點(diǎn)語(yǔ)法,通過(guò)定義好的元組變量或常量獲取它的第1個(gè)到第n個(gè)元素:

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

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

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

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

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

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

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

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

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

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

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

為什么說(shuō)上述函數(shù)的返回值是secondHighScore元組呢?因?yàn)間etAHighScore函數(shù)返回的元組元素個(gè)數(shù)、元素名稱、元素類型均和secondHighScore相同。

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

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

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

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

因?yàn)槭强蛇x的元組類型,所以當(dāng)返回的元組不為nil時(shí),你需要對(duì)元組進(jìn)行解包:

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

注意:當(dāng)你定義了一個(gè)沒(méi)有返回值的函數(shù)時(shí),其實(shí)該函數(shù)是返回一個(gè)空的元組()。

元組的訪問(wèn)級(jí)別

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

元組是值類型

關(guān)于值類型和引用類型的知識(shí)這里不再累贅,我們通過(guò)一個(gè)代碼示例來(lái)看看元組是哪種類型:

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

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

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Swift語(yǔ)言實(shí)現(xiàn)地圖坐標(biāo)彈跳動(dòng)畫

    Swift語(yǔ)言實(shí)現(xiàn)地圖坐標(biāo)彈跳動(dòng)畫

    這篇文章主要介紹了用Swift語(yǔ)言實(shí)現(xiàn)地圖坐標(biāo)彈跳動(dòng)畫的方法主要應(yīng)用iOS7來(lái)實(shí)現(xiàn)此功能,需要的朋友可以參考下
    2015-07-07
  • 詳解swift中xcworkspace多項(xiàng)目管理

    詳解swift中xcworkspace多項(xiàng)目管理

    給大家詳細(xì)講解了IOS開(kāi)發(fā)中swift語(yǔ)言xcworkspace多項(xiàng)目管理的方法和介紹,一起參考一下。
    2017-11-11
  • Swift中的類class與結(jié)構(gòu)體struct體學(xué)習(xí)筆記

    Swift中的類class與結(jié)構(gòu)體struct體學(xué)習(xí)筆記

    和C++一樣,Swfit中同時(shí)擁有類與結(jié)構(gòu)體,能夠充分滿足開(kāi)發(fā)者面向?qū)ο蠛兔嫦蜻^(guò)程編程的需求,這里我們就來(lái)看一下Swift中的類class與結(jié)構(gòu)體struct體學(xué)習(xí)筆記
    2016-07-07
  • iOS Swift讀取本地json文件報(bào)錯(cuò)的解決方法

    iOS Swift讀取本地json文件報(bào)錯(cuò)的解決方法

    只要是app開(kāi)發(fā)者都知道,從服務(wù)器端獲得的數(shù)據(jù)要不就是json格式的數(shù)據(jù),要么就是xml格式的數(shù)據(jù),而這篇文章主要給大家介紹了關(guān)于iOS Swift讀取本地json文件報(bào)錯(cuò)的解決方法,需要的朋友可以參考借鑒,下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Swift教程之字符串和字符詳解

    Swift教程之字符串和字符詳解

    這篇文章主要介紹了Swift教程之字符串和字符詳解,本文講解了字符串常量、初始化一個(gè)空串、變長(zhǎng)字符串、字符串不是指針,而是實(shí)際的值、字符等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • swift指針及內(nèi)存管理內(nèi)存綁定實(shí)例詳解

    swift指針及內(nèi)存管理內(nèi)存綁定實(shí)例詳解

    這篇文章主要為大家介紹了swift指針及內(nèi)存管理內(nèi)存綁定實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Swift實(shí)現(xiàn)代碼混淆詳解

    Swift實(shí)現(xiàn)代碼混淆詳解

    本文詳細(xì)講解了Swift實(shí)現(xiàn)代碼混淆的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2021-11-11
  • Swift中 !和 ?的區(qū)別及使用

    Swift中 !和 ?的區(qū)別及使用

    這篇文章主要介紹了Swift中 !和 ?的區(qū)別及使用的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Swift進(jìn)階教程Mirror反射示例詳解

    Swift進(jìn)階教程Mirror反射示例詳解

    這篇文章主要為大家介紹了Swift進(jìn)階教程Mirror反射示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • swift 4自定義UITableCell的方法示例

    swift 4自定義UITableCell的方法示例

    這篇文章主要給大家介紹了關(guān)于swift 4自定義UITableCell的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06

最新評(píng)論

壤塘县| 扶沟县| 富源县| 那曲县| 安福县| 古浪县| 德化县| 长沙县| 吴川市| 锦屏县| 福海县| 化德县| 调兵山市| 诸城市| 射洪县| 贵定县| 贺兰县| 浪卡子县| 宿州市| 北宁市| 台东县| 军事| 德安县| 东乌珠穆沁旗| 彰化市| 华安县| 怀仁县| 容城县| 静宁县| 马关县| 边坝县| 仁怀市| 呈贡县| 基隆市| 黑龙江省| 黎川县| 临城县| 本溪市| 巴楚县| 安西县| 连城县|