swift3.0中?和!的学习理解心得

  我们在学习swift的时候经常会有各种的?和!  看了很多帖子并且使用

其实 我们的?和!的区别和使用大概就是:--------- 定义可选项使用“?“  而 强行解包的时候用“!”,准备计算。

(1)原始的可选项定义:none没有值,或者some某一类值  let x:Optional = 10  

(2)简单的可选项定义:用“?” 意思是可能没有值,也可能有一个值 let y:Int? = 40 

上面两个输出的值print(x) print(y)都是打印出这样Optional(10) 等等

(3)如果print(x+y)那么不同类型之间不可以直接运算 如果nil不是任何数据类型 不能参与计算

(4)上面的第(2)条里的 如果赋值为nil那么在打印print(y)的时候会报错 found nil……意思是解包时候发现了nil值

(5)程序员可以在解包的时候y!添加这个符号 意思是从可选值中强行获取对应的非空值,如果真的是nil 那么就会崩溃 

程序少用!并且程序员要对!负责 因为一旦用了!那么运行的时候报错直接崩溃。而第(4)条的是编译时候就提示有错

 

另外还有一点是 用!和?的好处是程序不会在因为nil值得错误像oc里一样直接崩溃在main函数中了 这点是oc里的缺憾处。现在swift加以改进 从而在我们调试的时候xcode编译就不会通过 就会提示为空  如果我们非要加上!那么就会在编译通过但是运行报错

 

 

let的可选值没有默认值  var的可选值默认为nil

posted @ 2017-03-16 14:09  wangxiaoqi  阅读(379)  评论(0编辑  收藏  举报