一天一步,慢慢前进;
由于今天比较忙,所以,就比较晚的更新博客了
元组是什么呢?元组是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.
}
}
好啦,希望大家都有所获,今天学的东西不多,但是理解了就好.
大家加油!