元祖
概念
在其他语言中很早就有元祖这个概念,但是对于Objective-C程序员来说这是一个新的概念,什么是元祖呢?元祖就是讲多个相同
或者不用类型的值
用一个小括号
括起来就是一个元祖
1 | /// 声明一个元祖 |
定义
元祖其实和结构体很像,只是不需要提前定义类型。那么如果不定义类型元祖是什么类型呢?元祖其实是复合类型,所以小括号可以写任意类型,当然你也可以定义类型
- 常规定义
1 | let teacher : (String, Int, Int) = ("daisuke", 40, 170) |
- 指明应用元祖元素的名称定义
1 | let student2 = (name: "daisuke", age: 24, height: 174) |
- 通过制定的名称提取元祖对应的值,会将对应位置的值,赋值给对应位置的名称
1 | let (name, age, height) = ("daisuke", 24, 174) |
如果不关心元祖中的某个值,可以利用_通配符忽略提取
1 | let (name1, age1, _) = ("daisuke", 24, 174) |
总结
在以前没有元祖之前,C和OC语言时候通过传入指针或者返回结构体方式来返回多个值的,而有了元祖之后就可以实现让一个函数返回多个值了
可选值optionals
概念
可选值,顾名思义就是可有可无,那么optionals就有两种两种状态了,一是有值,而是没有值,也就是nil
1 | // 有值 |
应用
- 可选值可以利用if语句来进行判断
1 | var weightVaule: Int? |
- 提取可选类型的值
(强制解析),会将optionValue
中的整形值强制拿出来赋值给变量result
,换句话来说就是告诉编译器optionValue
一定有值,因为可选类型有两种状态,有值
和没有值
,所以需要告诉编译器到底有没有值。需要注意的是:如果强制解析optionValue
,但是optionValue
中没有值时会引发一个运行错误
1 | var optionAge: Int? = 24 |
1 | // 报错 |
- 可选绑定
为了更安全的解析可选类型的值,一般情况下使用可选绑定。什么是可选绑定? 如果optionValue
没有值就不会做任何操作
,如果optionValue
有值会返回true
,并将optionValue
的值返回给result,然后继续执行大括号的代码
,这就是可选绑定
1 | // 字符串 |
总结
1、可选类型就是两个状态,有值和没有值。 2、一般情况下使用可选绑定方式进行可选值的获取