標籤:
元組在oc中是沒有的,在swift中是新加的,學oc數組概念時還在想既然可以儲存相同類型的元素,那不同類型的元素有沒有東西儲存呢,答案很悲傷,oc沒有元組這個概念,不過swift中添加了這個東西,也挺有意思的,下面就我個人說一下對元組的理解,如果有不對的,請指出,共同進步,謝謝
元組(touples)就是可以儲存不同資料類型的一個集合,用()表示,舉個栗子
let touples = ("xiaoyu",16,"math",98.5)
println(touples)
看到提示就應該知道我們可以通過touples.0或者.1或者.2或者.3來訪問元組的元素,由swift的類型推斷就知道對應的資料類型
我們也可以用第二種方法建立元組
let (name,_,_,score) = touples
上面的_在swift中是萬用字元,記做忽略的意思,就是你不需要對應的值,用不著
println(name)
println(score)
其實我個人更喜歡第三種方式,清晰明了,代碼更易讀
let touple = (name:"xiaoyu",age:16,souce:"math",scores:98.5)
println(touple.name)
說了上面一大推,我還是不知道元組可以幹嘛,巴拉巴拉,只知道怎麼建立,讀取等等,那麼我們這個元組小夥伴可以做些啥事啊,下面舉個小栗子
override func viewDidLoad() { var touple = (name:"xiaoyu",age:16,souce:"math",scores:98.5) println(touple.name) swapMe(&touple.name, b: &touple.souce) println(touple) } func swapMe<T>(inout a:T,inout b:T){ let temp = a a = b b = temp }
通過上面的代碼我們就偷偷把math和name交換了,(注意,這裡只能交換形同的類型,T是一種泛型表達),但是我們學了元組就可以這樣寫了
func swapMe<T>(inout a:T,inout b:T){ (a,b) = (b,a) }
恩,可以達到相同的效果,不信,再來一個數組做實驗
var tempArr = [5,7] swapMe(&tempArr[0], b: &tempArr[1]) println(tempArr)
恩,這回真心可以了
還有就是元組真心放什麼都可以啊,不信可以試試下面的操作
var num = 42 println(num) println(num.0.0.0.0)
元組另一個有用的地方就是錯誤處理了,可以把錯誤直接放在元組裡面返回
參考:喵神的書
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
swift學習之元組