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

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

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

元組

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

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

let firstHighScore = ("Mary", 9001)

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

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

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

從元組中讀元素

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

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

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

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

如果你只需要一部分元組值,分解的時候可以把要忽略的部分用下劃線(_)標(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)你想讓一個函數(shù)能夠返回多種類型時,這是元組的最佳使用場景。

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

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

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

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

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

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

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

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

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

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

元組的訪問級別

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

元組是值類型

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

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。由此可見元組是值類型。

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

    iOS Swift讀取本地json文件報錯的解決方法

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

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

    這篇文章主要介紹了Swift教程之字符串和字符詳解,本文講解了字符串常量、初始化一個空串、變長字符串、字符串不是指針,而是實(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)代碼混淆的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(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)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06

最新評論

库尔勒市| 北流市| 雷山县| 安阳县| 太保市| 万山特区| 丹阳市| 垣曲县| 青阳县| 庐江县| 眉山市| 咸阳市| 静海县| 白山市| 东明县| 封开县| 合水县| 敦化市| 永定县| 甘肃省| 河东区| 台北县| 定结县| 修文县| 大悟县| 娄底市| 保靖县| 平顺县| 峨边| 从江县| 嘉善县| 姜堰市| 昆明市| 响水县| 东乌| 梁河县| 平江县| 西峡县| 勃利县| 崇文区| 上林县|