《从零开始学Swift》学习笔记(Day 27)——可选类型
来源:互联网 发布:windows error code 编辑:程序博客网 时间:2024/06/06 00:48
可选类型:
我们先看看如下代码:
var n1: Int = 10
n1 = nil //编译错误
let str: String = nil //编译错误
Int和String类型不能接受nil的,但程序运行过程中有时被复制给nil是在所难免的,Swift为每一种数据类型提供一种可选类型(optional),即在某个数据类型后面加上问号(?)或感叹号(!),修改前文示例代码:
var n1: Int? = 10
n1 = nil
let str: String! = nil
Int?和String!都是原有类型Int和String可选类型,它们可以接受nil。
可选类型值拆包
在可选类型的问号(?)或感叹号(!)究竟有什么区别呢?这与可选类型的“拆包”(unwrapping)有关,拆包是将可选类型变成普通类型,如果我们直接打印非空的可选类型值,代码如下:
var n1: Int? = 10
print(n1)
输出的结果是Optional(10),而非10。所以试图计算表达式n1 + 100会发生编译错误,代码如下:
var n1: Int? = 10
print(n1 + 100) //发生编译错误
需要对可选类型值进行“拆包”是必要地。
“拆包”分为显示拆包和隐性拆包。
使用问号(?)声明的可选类型,在拆包时需要使用感叹号(!),这种拆包方式称为“显式拆包”;
使用感叹号(!)声明的可选类型,在拆包时可以不使用感叹号(!),这种表示方式称为“隐式拆包”。
看看下面代码:
var n1: Int? = 10
print(n1! + 100) //显式拆包
var n2: Int! = 100
print(n2 + 200) //隐式拆包
我们先看看如下代码:
var n1: Int = 10
n1 = nil //编译错误
let str: String = nil //编译错误
Int和String类型不能接受nil的,但程序运行过程中有时被复制给nil是在所难免的,Swift为每一种数据类型提供一种可选类型(optional),即在某个数据类型后面加上问号(?)或感叹号(!),修改前文示例代码:
var n1: Int? = 10
n1 = nil
let str: String! = nil
Int?和String!都是原有类型Int和String可选类型,它们可以接受nil。
可选类型值拆包
在可选类型的问号(?)或感叹号(!)究竟有什么区别呢?这与可选类型的“拆包”(unwrapping)有关,拆包是将可选类型变成普通类型,如果我们直接打印非空的可选类型值,代码如下:
var n1: Int? = 10
print(n1)
输出的结果是Optional(10),而非10。所以试图计算表达式n1 + 100会发生编译错误,代码如下:
var n1: Int? = 10
print(n1 + 100) //发生编译错误
需要对可选类型值进行“拆包”是必要地。
“拆包”分为显示拆包和隐性拆包。
使用问号(?)声明的可选类型,在拆包时需要使用感叹号(!),这种拆包方式称为“显式拆包”;
使用感叹号(!)声明的可选类型,在拆包时可以不使用感叹号(!),这种表示方式称为“隐式拆包”。
看看下面代码:
var n1: Int? = 10
print(n1! + 100) //显式拆包
var n2: Int! = 100
print(n2 + 200) //隐式拆包
0 0
- 《从零开始学Swift》学习笔记(Day 27)——可选类型
- 《从零开始学Swift》学习笔记(Day 27)——可选类型
- 《从零开始学Swift》学习笔记(Day 26)——可选链
- 《从零开始学Swift》学习笔记(Day 26)——可选链
- 《从零开始学Swift》学习笔记(Day 15)——请注意数字类型之间的转换
- 《从零开始学Swift》学习笔记(Day 15)——请注意数字类型之间的转换
- 《从零开始学Swift》学习笔记(Day 1)——我的第一行Swift代码
- 《从零开始学Swift》学习笔记(Day 2)——使用Web网站编写Swift代码
- 《从零开始学Swift》学习笔记(Day 3)——Swift 2.0之后增加的关键字
- 《从零开始学Swift》学习笔记(Day 17)——Swift中数组集合
- 《从零开始学Swift》学习笔记(Day 56)—— Swift编码规范之命名规范
- 《从零开始学Swift》学习笔记(Day 3)——Swift 2.0之后增加的关键字
- 《从零开始学Swift》学习笔记(Day 17)——Swift中数组集合
- 《从零开始学Swift》学习笔记(Day 56)——Swift编码规范之命名规范
- 《从零开始学Swift》学习笔记(Day 28)——总结使用问号(?)和感叹号...
- 《从零开始学Swift》学习笔记(Day 8)——小小常量、变量大作用
- 《从零开始学Swift》学习笔记(Day 9)——离开表达式你试试!
- 《从零开始学Swift》学习笔记(Day 10)——运算符是“ +、-、*、/ ”吗?
- Android中代码混淆之proguard
- centos 上 Jenkins安装
- linux开启ftp服务(vsftpd软件的安装及配置)
- IOS9 App Transport Security has blocked a cleartext HTTP (http://) resource load since it is
- 为什么使用where 1=1
- 《从零开始学Swift》学习笔记(Day 27)——可选类型
- 第三方短信平台——SUBMAIL 配置 DNS 解析
- struts2文件上传下载(含中文编码问题)
- 集合练习
- 2016.09.29 queue.c
- 元素的显示与隐藏
- suse如何创建定时任务?
- Angularjs设置ng-repeat里面循环出来的select的默认值
- Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )