1、元组类型 (tuple)

元组就是多个元素的组合,是一个用圆括号括起来分号分隔的多个数据的一个集合体.

例如:定义一个学生变量,要求姓名 jim,年龄 19,性别 male 的元组变量为

   //元组的显示定义.

  var stu(String,Int,String) = (name:"jim", age:19,gender: "male")

  //元组的隐式定义,隐式定义自动识别元素类型,stu的类型为(String,Int,String).

  var stu = ("jim", 19, "male")  

Swift 还提供了一种方式用来分解元组隐式定义,可以将元组类型中的每一个数据分解到单个变量中

例如:

  var (name, age, gender) = stu

如果分解的时候只需要一部分数据,可以使用下划线来占位,表示忽略该数据

例如:只需要学生姓名与性别,可以使用

  var (name, _, gender) = stu

使用元组变量访问成员的时候,可以使用索引或别名.

1 var stu = (name:"jim", age:19, gender:"男")
2 print("姓名:\(stu.0),年龄:\(stu.1),性别:\(stu.2)")
3 print("姓名:\(stu.name),年龄:\(stu.age),性别:\(stu.gender)")

2、可选类型(可空类型)
在 Swift 中提供了一种类型,允许其值为空( nil ),那么该类型的值可以是数据,也可以是一个 nil
定义可选类型的就是在类型后加上一个问号即可.

例如:

  var num : Int? = 123

  num = nil

如果定义可选类型后没有初始化,那么会自动初始化为 nil

如果要获取可选类型中的数据,可以使用强制解包的方法,就是在变量后加上一个惊叹号,也称为强制解包

例如:

  print(num!)

这里可以使用一个if语句判断解包

  if num != nil {

  print(num!)

  } else {

  print("存储 nil, 无法解包")

  }

如果肯定变量是非 nil 的, 可以使用下面的方式解包数据

  var num : Int?

  var res : Int! = num //这里的res就是num解包后的数据

3、数组类型
Swift 中也提供了数组类型,用于存储多个数据.
声明数组的语法是:

  var 标识符 : [元素类型]
或者
  var 标识符 : Array<元素类型>

这里创建数组,如果是使用的 var 那么就是长度可变的数组;如果使用的是 let 就
是长度不变的数组.

数组字面值就是使用方括号括起来,用逗号连接的数据集合.

例如:

  // 这是一个长度为 4 的, 元素为 Int 的可变数组

  var arr = [1, 2, 3, 4]

  // 这是一个长度为 3 的,元素为 String 的不可变数组

  let arr = ["a", "b", "c"]

  • 简单的数组元素操作
  • 1)使用 [下标] 可以对可变数组元素进行读写操作
  • 2)使用加号 ( + ) 可以连接两个数组
  • 3)使用 count 属性获得数组长度
  • 4)使用 isEmpty 属性判断 count 是否等于 0
  • 5)使用 append() 方法追加元素
  • 6)使用 += 追加数据
  • 7)使用 arr[left ... right] 来修改数组内容与长度
  • 8)使用 insert(_: atIndex:) 来插入数据
  • 9)使用 removeAtIndex(_:) 来删除数据
  • 10)使用 removeLast() 来删除并返回最后一个元素

4、字典
除了使用数组,Swift 还提供了字典数据类型,来存储键值对数据.

与 Foundation
中的 NSDictionary 和 NSMutableDictionary 的功能类似.

创建字典数据使用语法:

  var dic : [ keyType : valueType ]

或者

  var dic : Dictionary<KeyType, ValueType>

字典的字面量是,将用冒号连接的键值数据用逗号连接起来,在放入方括号中来 表示

  var stus = [ "001" : ("张三", 19, "男"), "002" : ("李四", 20, "男"), "003" : ("小红", 18, "
女")]

同理使用 let 就是不可变字典,需要注意的是,字典是无序的

  • 简单的字典操作
  • 1)使用 [键值] 访问与键绑定的数据
  • 2)使用 count 属性获得字典中有多少条数据
  • 3)使用 isEmpty 属性判断字典是否为空
  • 4)使用 [:] 创建一个空字典
  • 5)使用 updateValue(_: forKey:) 方法,利用键更新值,并返回更新前的数据
  • 6)使用 removeValueForKey(_:) 方法删除并返回数据

swift复合类型的更多相关文章

  1. Swift基础类型

    1.使用 let 来声明常量,使用 var 来声明变量. 注:你能够在一行中声明多个常量或者多个变量.用逗号隔开. 2.类型标注 假设初始值没有提供足够的信息(或者没有初始值),那你须要在变量后面声明 ...

  2. 浅谈Swift集合类型

    Swift 的集合表现形式由数组和字典组成.它可以完美的存储任何呢想存储的东西. 数组是一个同类型的序列化列表集合,它用来存储相同类型的不同值.字典也是一个数组,但它的存值方式类似于Map,通过一对一 ...

  3. 第54讲:Scala中复合类型实战详解

    今天学习了scala的复合类型的内容,让我们通过实战来看看代码: trait Compound_Type1trait Compound_Type2class Compound_Type extends ...

  4. 实现在GET请求下调用WCF服务时传递对象(复合类型)参数

    WCF实现RESETFUL架构很容易,说白了,就是使WCF能够响应HTTP请求并返回所需的资源,如果有人不知道如何实现WCF支持HTTP请求的,可参见我之前的文章<实现jquery.ajax及原 ...

  5. go语言 类型:基础类型和复合类型

    Go 语言中包括以下内置基础类型:布尔型:bool整型:int int64 int32 int16 int8 uint8(byte) uint16 uint32 uint64 uint浮点型:floa ...

  6. C语言中的复合类型

    复合类型 一.掌握的类型 1. 指针数组 int * arr[10]; //arr是一个数组,有10个元素,每个元素都是一个指针,即arr是一个指针数组 int a,b,c,d; arr[0] = & ...

  7. 学习C++.Primer.Plus 4 复合类型

    本章介绍的有复合类型有: 数组. 字符串. 结构. 共用体. 指针 数组: 声明数组时数组长度必须为常量(或const). 只有初始化时可以用“=”,其它时候均不可以给数组直接赋值,除了赋值的元素以外 ...

  8. C++Primer快速浏览笔记-复合类型

    C++Primer2.3节介绍了两种复合类型:引用和指针 1.引用 引用并非对象,它只是为一个已经存在的对象所起的别名. 一旦初始化完成,引用将和它的初始值对象一直绑定在一起,不能重新绑定到另一个对象 ...

  9. Scala 深入浅出实战经典 第54讲:Scala中复合类型实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

随机推荐

  1. 用Filter程序实现静态HTML页面的访问保护

    今天为练习Filter的用法编写了一个小程序. 当用户通过article的超链接读取文章的时候,会通过Filter进行检测有没有登录.只有登录的读者才能跳到文章页面,否则跳到登录页面. 文章就用简单的 ...

  2. 如何使用网盘托管git项目

    话说近年来git已经成为项目源代码管理的标准工具,有不少免费托管网站可供使用,详情参考这篇文章: http://www.cnblogs.com/zdz8207/archive/2012/05/20/2 ...

  3. Nginx使用的php-fpm的两种进程管理方式及优化(转)

    php-fpm目前主要又两个分支,分别对应于php-5.2.x的版本和php-5.3.x的版本.在5.2.x的版本中,php-fpm.conf使用的是xml格式,而在新的5.3.x版本中,则是和php ...

  4. 怎样把excel一列分成多列

    1,选定要分列的列. 2,点击“数据”-“分列”. 3,在选项栏中设置如图 4,选择分隔符 4,看,分开了吧!

  5. 解决mysqldump: Got error: 1044: Access denied for user

    转自:http://blog.slogra.com/post-512.html 今天给新加的几个数据库备份,在执行mysqldump的时候,居然报mysqldump: Got error: 1044: ...

  6. Linux下链接mysql数据库的命令

    一.MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格) C:\>mysql -h localhost -u root -p123 二. ...

  7. Run UliPad 4.1 Under Windows 7 64bit and wxPython 3.0.2

    Abstract: UliPad that is developed by limodou is an excellent code editor. It works well with wxPyth ...

  8. Entity Framework 自动生成CodeFirst代码

    前言 在前面的文章中我们提到Entity Framework的“Code First”模式也同样可以基于现有数据库进行开发.今天就让我们一起看一下使用Entity Framework Power To ...

  9. Entity Framework 简单增删改操作

    前言 在 Entity Framework 简单查询操作 中主要是学习了在Entity Framework中的几种不同模式的查询操作,现在主要来学习一下简单的增加.删除.修改操作. 增加 在EF中添加 ...

  10. php面试题之五——MySQL数据库(基础部分)

    五.MySQL数据库 mysql_num_rows() mysql_affected_rows() 这两个函数都作用于 mysql_query($query)操作的结果,mysql_num_rows( ...