空合运算符 ??(Nil Coalescing Operator)
2015-08-21 16:28
337 查看
空合运算符(a ?? b):空合运算符是对可选类型a进行判断,如果a的值为nil,则返回b;如果a不为nil,则直接返回a!(对a强制拆包),不再运行b(也叫短路运算),这个运算是简化了三目运算符 return a != nil ? a! : b
来个例子:
输出str的值是a
一般情况下,使用空合运算符需要满足两个条件:
1.a必须是可选类型(optionals)
2.默认值b的类型和可选类型a存储的值一致
当然还有另外一种情况,就是当默认值b也是一个可选类型的时候(这个可选类型存储的值和a存储的值类型一致),举个例子:
可以看下这两个方法,说是叫运算符,其实是一个func。当默认值为可选类型时,返回的数据类型就是可选类型。所以使用空合运算符需要满足两个条件
1.a必须是可选类型(optionals)
2.默认值b的类型和可选类型a存储的值一致,也可以和a的类型一样
引用:《The Swift Programming Language》
如有问题欢迎指正,谢谢
来个例子:
var aStr :String? = "a" var defaultStr :String = "default" let str = aStr ?? defaultStr println(str)
输出str的值是a
一般情况下,使用空合运算符需要满足两个条件:
1.a必须是可选类型(optionals)
2.默认值b的类型和可选类型a存储的值一致
当然还有另外一种情况,就是当默认值b也是一个可选类型的时候(这个可选类型存储的值和a存储的值类型一致),举个例子:
var aStr :String? = "b" var bStr :String? let str = aStr ?? bStr
println(str)此时输出的结果是optional(“b”)。为什么返回一个可选类型呢???
func ??<T>(optional: T?, defaultValue: @autoclosure () -> T?) -> T? func ??<T>(optional: T?, defaultValue: @autoclosure () -> T) -> T
可以看下这两个方法,说是叫运算符,其实是一个func。当默认值为可选类型时,返回的数据类型就是可选类型。所以使用空合运算符需要满足两个条件
1.a必须是可选类型(optionals)
2.默认值b的类型和可选类型a存储的值一致,也可以和a的类型一样
引用:《The Swift Programming Language》
如有问题欢迎指正,谢谢
相关文章推荐
- Apple Swift学习教程
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift中定义二维数组的方法及遍历方法示例
- 简单分析Swift语言的一些基本特征
- Swift与C语言指针结合使用实例
- Swift心得笔记之控制流
- 用Swift构建一个简单的iOS邮件应用的方法
- 苹果公司推出的新编程语言Swift简介和入门教程
- Swift中的指针操作和使用详细介绍
- Swift中使用正则表达式的一些方法
- Swift心得笔记之运算符
- Swift中使用可选类型完美解决占位问题
- Swift学习笔记之构造器重载
- Swift中的Access Control权限控制介绍
- Swift类型创建之自定义一个类型详解
- Swift教程之控制流详解
- Swift中初始化方法的顺序介绍
- Swift里的值类型与引用类型区别和使用
- Swift调用Objective-C编写的API实例