Swift可选类型(optionals)、强制拆包、可选绑定、隐式拆包

可选类型介绍

可选类型表示:这个变量有值;或者这个变量没有值(为nil)。例如

// 下面的字符串str可能有值,也可能为nil
var str: String?

// 赋值
str = "Hello"

// 可以给可选变量赋值nil
str = nil

注意:可选变量可以使用nil赋值表示它没有值;但nil不能用于非可选的变量和常量

可选的强制解析(或者叫强制拆包、强制解包)

强制解析:就是使用if判断可选变量!=nil时使用,但使用时需要加上!表示该可选变量一定有值。

// 如果你强制解析后不加!,系统默认会加?确保调用的安全性
if str != nil {
    str!.append(" world!")
}

可选绑定

可选绑定:就是在强制解析的基础上,在if语句中将可选变量赋值给一个临时常量或变量,在if作用域内使用这个临时常量即可。

if let temp = str {
    temp.append(" world!")
}

可选的隐式解析

可选的隐式解析:就是声明可选变量时,变量后面直接加!表示该可选一定有值。以后使用都不用再加?和!。
使用场景:一个变量初始化一个值后,可以确保这个变量以后都不会为nil

var str: String! = "hello"
str.append(" world!")

注意:如果一个变量在赋值后,还可能被赋值为nil,此时不能使用隐式解析,应该使用普通的可选
思考:既然隐式解析在使用的时候能确保一直都不会为nil,那为什么不干脆直接使用非可选类型呢?这个问题,我想了好久,最后得出的结论是:隐式解析的变量在deInit的时候如果需要释放(赋值为nil),这时非可选就达不到这要求了。至于使用隐式解析的其他原因,我就不是很清楚了,还希望大家知道原因的来告诉我哦!

你可能感兴趣的:(Swift可选类型(optionals)、强制拆包、可选绑定、隐式拆包)