加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift学习之元组

发布时间:2020-12-14 01:58:12 所属栏目:百科 来源:网络整理
导读:元组在oc中是没有的,在swift中是新加的,学oc数组概念时还在想既然可以存储相同类型的元素,那不同类型的元素有没有东西存储呢,答案很悲伤,oc没有元组这个概念,不过swift中添加了这个东西,也挺有意思的,下面就我个人说一下对元组的理解,如果有不对的

元组在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",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)
元组另一个有用的地方就是错误处理了,可以把错误直接放在元组里面返回





参考:喵神的书

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读