《从零开始学Swift》学习笔记(Day 27)——可选类型
2016-09-29 17:24
183 查看
可选类型:
我们先看看如下代码:
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) //隐式拆包
相关文章推荐
- 《从零开始学Swift》学习笔记(Day 26)——可选链
- swift学习笔记--for循环移除后的不便
- Swift 3.0 生成二维码图片
- CocoaPods 升级到1.1.0 beta 后无法使用新版本
- UIWebView读取Gif图 swift
- Swift中如何使用OC中的类
- Swift - as、as!、as?三种类型转换操作使用一览
- Swift好用的第三方
- 求一个数列的平均值和总和
- Swift 可选值(Optional Values)介绍
- how to make Completion Handlers and use it in Swift
- Xcode8 + Cocoapods + Swift2.3 适配
- Swift 2.3-> 3.0
- swift中修饰词,fileprivate、private、internal、public 、open 及lazy的使用
- swift项目第六天:中间发布按钮的封装以及监听点击事件
- 升级xcode8,swift3的注意点和变化
- iOS oc-NSString swift-String format
- Swift - Swift 3 新特性汇总(不同于以往版本的新变化)
- Swift 字典(Dictionary)
- 第九篇、Swift的基本使用