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. TCP/IP详解 学习二

    链路层: 在 T C P / I P协议族中,链路层主要有三个目的:(1)为 I P模块发送和接收 I P数据报:( 2)为 A R P模块发送 A R P请求和接收 A R P应答:( 3)为 R ...

  2. C#获取局域网中的所有正在使用的IP地址

    方法不是很好. using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  3. Web Service 元数据注释(JSR 181)

    Web Service 元数据注释(JSR 181) @WebService 1.serviceName: 对外发布的服务名,指定 Web Service 的服务名称:wsdl:service.缺省值 ...

  4. XSS Filter Evasion Cheat Sheet 中文版

    前言 译者注: 翻译本文的最初原因是当我自己看到这篇文章后,觉得它是非常有价值.但是这么著名的一个备忘录却一直没有人把它翻译成中文版.很多人仅仅是简单的把文中的 各种代码复制下来,然后看起来很刁的发在 ...

  5. ios开发@selector的函数如何传参数/如何传递多个参数

    不同的类会有不同的传递方式,参数名也不尽相同.如果是传单个参数的就不用集合,如果是传多个参数可以用类似nsarray,nsdictionary之类的集合传递.看下面例子: 例子1: 通过NSTimer ...

  6. thinkphp中limit方法

    limit方法也是模型类的连贯操作方法之一,主要用于指定查询和操作的数量,特别在分页查询的时候使用较多.ThinkPHP的limit方法可以兼容所有的数据库驱动类的. 用法 限制结果数量 例如获取满足 ...

  7. Android学习笔记之打钩显示输入的密码

    利用EditText作为密码输入框是个不错的选择(只需设置输入类型为textPassword即可),保密且无需担心被盗取.但有时用户也不知道自己输入的是否正确,这时就应该提供一个“显示密码”的复选框, ...

  8. [Effective JavaScript 笔记]第37条:认识到this变量的隐式绑定问题

    CSVReader示例 需求 CSV(逗号分隔型取值)文件格式是一种表格数据的简单文本表示 张三,1982,北京,中国 小森,1982,东京,日本 吉姆,1958,纽约,美国 现需要编写一个简单的.可 ...

  9. linux shell 流程控制

    导读 和Java.PHP等语言不一样,linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介绍下,各个语句使 ...

  10. linux 文件权限除了r、w、x外还有s、t、i、a权限:

    s:文件属主和组设置SUID和GUID,文件在被设置了s权限后将以root身份执行.在设置s权限时文件属主.属组必须先设置相应的x权限,否 则s权限并不能正真生效(c h m o d命令不进行必要的完 ...