1、可选项强行解包
使用!来给可选项解包
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
demo(x: 10, y: 20)
}
func demo(x:Int?, y:Int?) {
//直接进行强行解包
print(x! + y!)//输出结果:30
}
2、但是这样直接使用!来强行解包是有风险得:如果传入一个空值,程序就会崩溃
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
demo(x: 10, y: nil)
}
func demo(x:Int?, y:Int?) {
//直接进行强行解包
print(x! + y!)//因为y:nil,因为在swift中不同的数据类型是不能进行计算的所以会崩溃
}
3、解决强行解包带来的风险,使用??来解决可选项的解包
??是一个简单的 三目运算。如果有值,使用值,如果没有值,使用 ?? 后面的内容替代
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
demo1(x: 10, y: nil)
}
func demo1(x:Int?, y:Int?) {
print((x ?? 0) + (y ?? 0))
//输出结果:10
}
小结:使用??就可以解决强行解包带来的风险