在object-c中,nil实际上被定义为一个指向0的voID指针。严格说来,它是一个数字,这就意味着我们可以进行类似下面的 *** 作:
int i = (int) (nil)+2;
//等于2(因为0+2=2)
这在swift中是不允许的,因为nil和Int 是不同的类型。
swift中的所有变量都是需要有取值的。如果希望允许一个亦是在某些时候为nil,那就使它成为一个可选变量。可选变量的定义是在其类型中包含一个问号(?):
//可选 整数,允许为nil。
var anoptionalinteger : Int ? = nil
anoptionalinteger = 42
只有可选变量才允许被设置为nil。如果一个亦是没有被定义为nil,那就不允许将它设定为nil值:
//非可选(常规),不允许为nil。
var aNonoptionalinteger = 42
aNonoptionlinteger = nil
//错误:只有可选值才能为nil
可以使用if语句来查看一个可选变量是否拥有值:
if anoption胰腺 != nil{
print("it has a value")
}else{
print("It has no value.")
}
2.对于可选变量,可以进行拆包(unwrap) *** 作,获得其取值。这一工作用!字符实现。
请注意,如果对一个可选变量进行拆包,而它并没有值,程序将会抛出一个运行时错误,并会崩溃:
//可选类型必须使用!拆包
anoptionalinteger = 2
1+anoptionalinteger! //=3
anoptionalinteger = nil
1+anoptionalinteger!
//崩溃:anoptionalinteger = nil,不能使用nil数据
如果不希望在每次用到可选变量时都要对其进行拆包,可以将它们声明为已拆包的,像下面这样:
var unwrappendOptionalinteger: Int !
unwrappedOptionalinteger = 1
1+ unwrppedOptionalinteger // =2
这样就可以直接使用它们的值,但可能会不安全(因为它让你逃避了在需要时对其进行拆包的 *** 作,可能会让你忘了它们有时会有nil)。请谨慎使用。
总结以上是内存溢出为你收集整理的swift !?全部内容,希望文章能够帮你解决swift !?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)