Swift學習筆記之元組(tuples)

2022-09-20 19:30:12 字數 2429 閱讀 3034

元組

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

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

let firsthighscore = ("mary", 9001)

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

let secondhighscore = (name: "james", score: 4096)

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

從元組中讀元素

如果我們沒有給元組的元素命名,我們可以用點語法,通過定義好的元組變數或常量獲取它的第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)

為什麼說上述函式的返回值是secondhighscore元組呢?因為getahighscore函式返回的元組元素個數、元素名稱、元素型別均和secondhighscore相同。

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

func getahighscwww.cppcns.comore() -> (string, int)

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

func maybeg程式設計客棧ethighscore() -> (string, intwww.cppcns.com)?

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

if let possiblescore = maybegethighscore() else

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

元組的訪問級別

元組的訪問級別取決於它包含的元素。比如元組裡的元素都是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。由此可見元組是值型別。

總結本文標題: swift學習筆記之元組(tuples)

本文位址:

Swift學習筆記1 變數和元組

感覺基本語法和 js 很像 但是區別最大的就是 swift是強型別的語言,我個人是很贊同強型別的,因為若型別很容易引起很難發現的隱藏bug,因此對蘋果的做法非常贊同。所以依據強型別的特性,就可以很自然的引申出很多區別,例如用a 1 if a 這樣的語句則會在swfit當中報錯,這是理所應當的,a並不...

Swift學習筆記之基本資料型別 元組

1.示例 playground noun a place where people can play import cocoa 元組定義,裡面可包含不同的資料型別 let tupe 404,not found true,0.01 將乙個元組的內容分割常量或者變數 如果只需要元組中的部分值,忽略的部分...

Python中序列的內建型別之元組Tup(三)

python的元組是乙個固定的元素集合體,它與列表類似,不同之處在於元組的元素不能修改,由於他不能修改,所以它沒有公升降序之類的功能,並且元組沒有內建方法。而它卻常常被初始定義一些比較固定的元素,方便之後的呼叫,如對話資訊中的文字。元組使用小括號 也可以不使用括號 列表使用方括號。元組建立很簡單,只...