《从零开始学Swift》学习笔记(Day 27)——可选类型
来源:互联网 发布:sql2000自动备份数据库 编辑:程序博客网 时间:2024/05/16 10:01
原创文章,欢迎转载。转载请注明:关东升的博客
可选类型:
我们先看看如下代码:
var n1: Int = 10n1 = nil //编译错误 let str: String = nil //编译错误
Int和String类型不能接受nil的,但程序运行过程中有时被复制给nil是在所难免的,Swift为每一种数据类型提供一种可选类型(optional),即在某个数据类型后面加上问号(?)或感叹号(!),修改前文示例代码:
var n1: Int? = 10n1 = nil let str: String! = nil
Int?和String!都是原有类型Int和String可选类型,它们可以接受nil。
可选类型值拆包
在可选类型的问号(?)或感叹号(!)究竟有什么区别呢?这与可选类型的“拆包”(unwrapping)有关,拆包是将可选类型变成普通类型,如果我们直接打印非空的可选类型值,代码如下:
var n1: Int? = 10print(n1)
输出的结果是Optional(10),而非10。所以试图计算表达式n1+ 100会发生编译错误,代码如下:
var n1: Int? = 10print(n1 + 100) //发生编译错误
需要对可选类型值进行“拆包”是必要地。
“拆包”分为显示拆包和隐性拆包。
使用问号(?)声明的可选类型,在拆包时需要使用感叹号(!),这种拆包方式称为“显式拆包”;
使用感叹号(!)声明的可选类型,在拆包时可以不使用感叹号(!),这种表示方式称为“隐式拆包”。
看看下面代码:
var n1: Int? = 10print(n1! + 100) //显式拆包 var n2: Int! = 100 print(n2 + 200) //隐式拆包
欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
更多精品iOS、Cocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
智捷课堂论坛网站:http://51work6.com/forum.php
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)——运算符是“ +、-、*、/ ”吗?
- C++指针和数组:认识指针和数组
- 九度OJ 1174:查找第K小数 (排序、查找)
- 理解dropout
- leetcode 223 Retangle Area
- svn分支
- 《从零开始学Swift》学习笔记(Day 27)——可选类型
- arm-linux-gcc( arm-none-linux-gnueabi-gcc) cause "No such file or directory"
- 免安装版MySQL的配置
- C_运算符优先级
- 苹果开发 所要知道的那些类库含义 Cocoa,Foundation,UIKit,Objective-C,Xcode,Interface Builder,
- 互联网面试题之趣味数学题
- JAVA集合框架概述
- SetHandleInformation设置内核对象标志
- 九度OJ 1175:打牌 (模式匹配)