Swift可选值Optionals
我们用oc开发的时候,经常会遇到null值的情况,如果不加任何判断的话可能会导致程序崩溃,swift语言添加了可选值这样的概念,基本语法如下: 可选类型:
在类型后面加一个?表示optValue这个值可以为nil,"?"就是可选值的一个标记,?其实是一个Optionals的类型,我们可以看看swift的源码:
从源码可以看出,Optionals类型其实是一个枚举类型,一个是none,一个是非none: 因为optValue是一个可选值,所以可以把nil赋值给optValue,看看下面的代码:
varoptValue:Int?=8 optValue=nil letoptValue2=optValue print(optValue2) 这时候optValue是nil,把它赋值给optValue2的时候,程序会崩溃,但是可以用下面的方式:
varoptValue:Int?=8 optValue=nil iflett=optValue{ print("(t)") }else{ print("nil") }
当需要对optValue强制解包的时候,在变量后面加一个! 比如:
隐式解析可选 有时候在程序架构中,第一次被赋值之后,可以确定一个可选总会有值。在这种情况下,每次都要判断和解析可选值是非常低效的,因为可以确定它总会有值。 这种类型的可选被定义为隐式解析可选(implicitly unwrapped optionals)。把想要用作可 选的类型的后面的问号(String?)改成感叹号(String!)来声明一个隐式解析可选。 当可选被第一次赋值之后就可以确定之后一直有值的时候,隐式解析可选非常有用。
letoptValue:Int!=8 ifoptValue!=nil{ print(optValue) } iflett=optValue{ print(t) } vartm:Int=optValue print(tm)
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |