Swift学习笔记(十二)——nil的聚合运算 Nil Coalescing Operator
2015-07-26 22:33
543 查看
关于Nil Coalescing Operator这个运算符,对于Swift来说也是比较新的内容,有人称之为nil的聚合运算,很多时候是和Optional可选运算符结合在一起使用的。运算符为两个问号??。我们根据一个小需求来学习这个运算符。
首先知道nil聚合运算符:a ?? b。 a ?? b等价于a != nil ? a! : b;其中这是一个三元运算符,a!是解包的过程。a定义的时候声明为Optional。
需求是这样的,一个App,需要用户输入用户名,如果输入的的确是用户名,则显示“Hello 用户名”,没有输入显示“Hello Guest”。
(解决方案一):使用if-else语句实现
输出结果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201507/9692e66b0f6e2a7c7640f166173d832d)
。
(解决方案二)使用if-else显得比较冗长,我们可以使用三元运算符实现,代码如下:
输出结果如下:符合我们的预期。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201507/ab3984b06888c21cbe4f8b556be317ec)
。
(解决方案三)现在将会用到nil的聚合运算,即Nil Coalescing Operator。这将会大大简化代码。代码如下:
输出结果如下:符合我们的预期。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201507/ff78d4430618d7008fe454d138b8d7ac)
.
总结,该需求使用nil聚合运算显得非常简单,但是理解上有一定的困难,要在以后的学习中慢慢领悟。
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!
首先知道nil聚合运算符:a ?? b。 a ?? b等价于a != nil ? a! : b;其中这是一个三元运算符,a!是解包的过程。a定义的时候声明为Optional。
需求是这样的,一个App,需要用户输入用户名,如果输入的的确是用户名,则显示“Hello 用户名”,没有输入显示“Hello Guest”。
(解决方案一):使用if-else语句实现
var userNickName:String? //定义为可选类型 userNickName = "Jack" //输入用户名,或者不输入 if userNickName != nil{ //判断当前的可选类型是否为空 println("Hello \(userNickName!)") }else{ println("Hello Guest!") }
输出结果如下:
。
(解决方案二)使用if-else显得比较冗长,我们可以使用三元运算符实现,代码如下:
var userNickName:String? //定义为可选类型 userNickName = "Jack" //输入用户名,或者不输入 var outputName1:String = userNickName != nil ? userNickName! : "Guest"; println("Hello "+outputName1)
输出结果如下:符合我们的预期。
。
(解决方案三)现在将会用到nil的聚合运算,即Nil Coalescing Operator。这将会大大简化代码。代码如下:
var userNickName:String? //定义为可选类型 userNickName = "Jack" //输入用户名,或者不输入 var outputName2:String = userNickName ?? "Guest" println("Hello "+outputName2)
输出结果如下:符合我们的预期。
.
总结,该需求使用nil聚合运算显得非常简单,但是理解上有一定的困难,要在以后的学习中慢慢领悟。
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!
相关文章推荐
- Swift学习笔记(十一)——Swift中三元运算符的低级错误:Consecutive statements on a line must be separated by';'
- Swift学习笔记(十)——Swift对数据溢出的智能检查
- Swift学习笔记(九)——整型Int在Swift中表示的最大值最小值问题
- iOS编程——Swift实现一个不断渐变的圆环
- Swift学习笔记(八)——赋值运算符的返回值问题
- Swift
- Swift学习笔记(七)——高级数据类型之Optionals
- Swift学习笔记(六)——变量的默认初始化值的问题
- Swift学习笔记(五)——在Background中启用控制台Console Output模式
- iOS编程——Swift实现多段CAShapeLayer动画
- Swift学习笔记(四)——高级数据类型之元组详解
- Swift学习笔记(三)——布尔类型与if条件判断
- Swift学习笔记(二)——常量与变量
- Swift学习笔记(一)——我的第一个Swift程序 Hello World
- Swift:Extension和Protocol
- swift 代码布局 改变tv的高
- 关于c,c++,oc,swift的混合编程
- 苹果公司的新的编程语言 Swift 高级语言(十一)--初始化类的析构函数的一个实例
- SWift 的多线程延时
- swift语言中一些常用的运算符