Swif中的感叹号和问好以及两个问号的介绍

首先介绍一下swift 中的 Optional!
点到 Optional 的头文件可以看到, Optional 其实是个enum,里面有 case None 和 case Some(Wrapped)两种类型。其实所谓None 就是 nil, Some 就是 非nil, 是要进行包装的.这也是使用Optional的时候要拆包(从enum里取出来原始值)的原因!

一般"?"含有 可选,试一试,的意思,有可以选择的余地, 而 ‘!’ 含有的是 强制 的意思

1.‘?’ 的使用
当想要声明一个 Optional 的变量或者常量时,只需要在数据类型后面 加上 ‘?’ 即可

 // 名字
    var name: String?

声明为 Optional 的变量默认值是 nil,而常量是没有默认值的,主要用于在构造函数中给常量设置初始数值

2.Optional 解包

Optional 只有在解包后不为 nil 才可以参与运算.

  1. 强制解包

用 ‘!’ 进行解包,即强行解包. 一般只有在保证变量或者常量 有值(不为 nil)的时候才可以进行强行解包.若为 nil,强行解包,会报错

 var a: Int? 
        let b = 4
        print(a! + b)

3.运算符 ??

‘??’ 运算符可以用于判断 变量/常量 的数值是否是 nil.不为 nil ,则取变量或者常量本身的值,如果是 nil 则使用后面的值替代

 var a: Int?
        let b = 4
        print((a ?? 0) + b)

猜你喜欢

转载自blog.csdn.net/qq_43361450/article/details/84591290