• 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

  • 相关阅读:
    JSF大概介绍
    专门用于swing显示的工具类
    oracle 中查某表的所有列字段
    从实例谈OOP、工厂模式和重构
    C#中结构或类的嵌套 的方法
    怎样成为优秀的软件模型设计者
    Asp.NET编程时的几个小技巧
    在.net安装程序中部署oracle客户端全攻略
    在.NET中调用Oracle9i存储过程经验总结
    使用JNDI的一个容易忽略的错误
  • 原文地址:https://www.cnblogs.com/wangxiaoqi/p/6559217.html
Copyright © 2020-2023  润新知