swift之optional特色

Optional 是 Swift 的一大特色,也是 Swift 初学者最容易困惑的问题
定义变量时,如果指定是可选的,表示该变量可以有一个指定类型的值,也可以是 nil
所以,这么定义就是错的,如下图


Paste_Image.png

解决错误,如下图


Paste_Image.png
  • 定义变量时,在类型后面添加一个 ?,表示该变量是可选的
    变量可选项的默认值是 nil
    常量可选项没有默认值,主要用于在构造函数中给常量设置初始数值
//例如
let num: Int? = 10
  • 如果 Optional 值是 nil,不允许参与计算
    只有解包(unwrap)后才能参与计算
    在变量后添加一个 !,可以强行解包
  • 注意必须要确保解包后的值不是 nil,否则会报错
//: num 可以是一个整数,也可以是 nil,注意如果为 nil,不能参与计算
let num: Int? = 10
//let r1 = num + 100  //报错如下图
Paste_Image.png
let r1 = num! + 100  // num!为正解
//: 如果 num 为 nil,使用 `!` 强行解包会报错,如下错误演示
let num: Int?  //=10    //将 =10去掉,即默认nil
let r1 = num! + 100    //报错 如下
//unexpectedly found nil while unwrapping an Optional value
//翻译:  在[解包]一个可选值时发现 nil
//: 使用以下判断,当 num 为 nil 时,if 分支中的代码不会执行
if let n = num {
    let r = n + 10
}

?? 运算符
?? 运算符可以用于判断 变量/常量 的数值是否是 nil,如果是则使用后面的值替代
在使用 Swift 开发时,?? 能够简化代码的编写

let num: Int? = nil

let r1 = (num ?? 0) + 10
print(r1)

总结:上面罗列已较为详尽咯,其实大家世纪用的时候,注意一下就行, 而且一般弄错了还有错误提示,所以不必太担心。我初学时还真不习惯,到哪都判断

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容