Swift 元组

本文介绍了Swift中的元组,这是一种独特的数据类型,不同于Objective-C。通过代码和注释,详细阐述了元组的使用,包括可变元组和不可变元组的概念,鼓励读者学习并掌握这一特性。
摘要由CSDN通过智能技术生成

一天一步,慢慢前进;

由于今天比较忙,所以,就比较晚的更新博客了

元组是什么呢?元组是swift新推出来的,OC中没有的一个新的数据类型,当然了,多余的话也不多说了,直接代码->注释就OK了

//
//  ViewController.swift
//  SwiftTuples
//
//  Created by NapoleonBai on 14-11-11.
//  Copyright (c) 2014年 NapoleonBai. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.managerTuples()
    }
    
    //创建的这个函数用来管理测试元组
    func managerTuples(){
        //之前学OC或者java的时候,都没有接触到元组这个词,不知道是自己孤陋寡闻了还是之前没有
        //不管三七二十一,我们先来看看吧
        /*
        介绍:
            元组是Objective-C中没有的数据类型,与数组类似,都是表示一组数据的集合,但与数组不同,它的特点是:
                元组的长度任意
                元组中的数据可以是不同的数据类型
                元组的定义很简单,用小括号括起来,然后以逗号隔开就可以了
        注意:
            元组可以将多个数值组合成一个复合值,元组中的值可以是任意类型,并且值与值之间的类型可以不同。
        格式:
            (type,type,...)
        */
        //eg:
        //定义一个用户信息元组,存放Admin账号,密码123456,年龄22岁
        let userInfo = ("Admin","123456",22)
        
        //定义好了元组,那我们怎么使用它呢?
        //其实使用起来也比较方便
        println("userName=\(userInfo.0);userPassword=\(userInfo.1);userAge=\(userInfo.2)")  //userName=Admin;userPassword=123456;userAge=22
        
        //没错,这样看起来就像是使用下标访问一样,那么,它是不是只有这一种访问方式呢?答案肯定是:不是
        //我们接着往下走:
        //eg:
        
        let (userName,userPassword,userAge) = userInfo
        
         println("userName="+userName+";userPassword="+userPassword+";userAge=\(userAge)")  //userName=Admin;userPassword=123456;userAge=22
        
        //如下这样,将会抛出表达式太复杂的error,具体原因不详,希望知道的友友们可以帮忙解释下,thanks
        //println("userName="+userName+";userPassword="+userPassword+";userAge="+userAge)
        
        //Expression was too complex to be solved in reasonable time; consider breaking up the expression into distinct sub-expressions
        
        //以上是通过将userInfo在赋值给一个元组对象,让元组中的变量去替代输出userInfo中的值,顺序不能错乱
        
        /*
        上面的创建方法是不是感觉很不爽呀?不是在想:如果能够一步到位就好了,好吧,那我们继续往下看,go
        */
        
        var userInfoTwo = (userName:"Admin",userPassword:"123456",userAge:22)
        
        println("userName="+userInfoTwo.userName+";userPassword="+userInfoTwo.userPassword+";userAge=\(userInfoTwo.userAge)")  //userName=Admin;userPassword=123456;userAge=22
        
        //userInfoTwo元组采用了key-value的形式来建立,这样就可以根据key来得到对应的value了
        
        //当然了关于元组,还有很多信息内容
        //eg:
        //借用上面的userInfo
        let (userNameTwo,_,userAgeTwo) = userInfo
        //这样做是为什么呢?或许你猜对了,这样就是跳过了密码,没有给密码取一个name,所以就不能通过一个变量名来访问到密码了
        //注意:只要不想关心某个值,不想取出来,就用'_'替代
        
        //of course ,另一种方式就是在userInfoTwo中了,不给出userPassword这个key,那么就不能通过userInfoTwo.userPassword来访问密码了
        //eg:
        var userInfoThree = (userNameThree:"Admin","123456",userAgeThree:22)
        
        //我们继续,到这里了,我们是不是还没有修改过元组中的数据呢?想不想修改一下下呢?
        //我们动手吧:
        //eg:
        
        //userNameTwo = "Angel"   //Cannot assign to 'let' value 'userNameTwo'
        userInfoTwo.userName = "Angel"
        
        println("update after-->userName="+userInfoTwo.userName) //update after-->userName=Angel
        
        //这是为什么呢?这就跟let和var有关了
        //原理都应该明白:let定义的是常量,var定义的是变量
        //so,元组也有可变元组和不可变元组,var定义的就是可变元组,let定义的就是不可变元组了
        
        //那么元组到底有什么用呢?
        /*
        元组的实际意义:
            元组在函数返回值上特别有用,比如在一个尝试提取网页信息的函数可以返回(Int, String)元组类型来描述网页提取的成功或失败的信息。相比于函数返回单一的类型值,返回多个类型值的函数能提供更多有用的信息。
        注意:
            元组仅对临时的相关数据组合有用,他们并不适合于创建复杂的数据结构,如果你需要持续使用数据结构,请使用类或者结构类型而非元组类型
        */

        
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}



好啦,希望大家都有所获,今天学的东西不多,但是理解了就好.

大家加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值