码迷,mamicode.com
首页 > 编程语言 > 详细

Swift::3::可选值

时间:2014-10-27 00:38:14      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:http   io   os   ar   使用   java   sp   on   2014   

可选值(Optional)

在OC,一个class类型的变量,其值既可为一个有效的对象,亦可为nil。但诸如Int,Double等类型则没有nil值。比如,32位Int,超过最大值后,OC 会用NSNotFound处理,而不是nil值。Swift 比OC 更为灵活,直接在语法层面支持所有类型佳能用nil值--可选值(Optional)

如何使用

使用可选值,Swift 提供了非常简洁的方式,直接在类型后加‘?’,例如定义一个有可选值的整型变量:

var optionalInteger: Int?

运行Xcode playground 后,可以看到如下效果:
bubuko.com,布布扣

解包(Unwrapped)

Swift 是强类型语言,所以,上述optionalInteger 在使用时,Swift 并不希望它是可选值,必须为Int,因此,就需要解包--简单地理解,就是转换。解包的的操作,也很简单,在变量后面加 ‘!’,比如:

var normalInteger = optionalInteger! + 5

值绑定(Binding)

解包的前提是你确定该变量一定不是nil,否则强制解包会不安全,Swfit 提供了另一个很简洁的语法来检查解包前比值是否为nil值--即值绑定,再次使用optionalInteger为例:

if let tempInteger = optionalInteger{
    normalInteger = tempInteger + 5     
}else {
    // nil ,do something
}

注意,tempInter 赋值后,其值不是可选的,而是Int,所以不需要解包。

本文,参考http://www.codingexplorer.com/swift-optionals-declaration-unwrapping-and-binding/

Swift::3::可选值

标签:http   io   os   ar   使用   java   sp   on   2014   

原文地址:http://my.oschina.net/suda/blog/337578

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!