1.运行是否会报错?

var age: Int? = 10
var num = age + 20

会,因为age不是Int类型,age的类型是Optional可选类型,可选项相当于一个盒子,里面存的数据是Int类型,也可能是nil,nil是Int类型吗?显然不是.既然不是Int类型,age+20肯定会报错了

可选项绑定: Optional Binding 如果包含就自动动解包,把取出的值赋给一个临时常量或变量,并返回true,否则返回false

if let number = Int(123) {
    // success
}else{
    // fail
}

2.可选绑定,可以写多个条件绑定值,但是是以英文逗号为分隔,而不是if 中常用的&&符号

var age1: Int = 11
var age2: Int = 22
if let num1 = Int(123), let num2 = Int(aa123), age1 > age2  {
    // success
}else{
    // fail
}

3.while循环中使用可选项绑定

需求:遍历数组,将遇到的正数都加起来,如果遇到负数或者非数字,停止遍历

var strs = [11, 22, ab]

var index = 0
var sum = 0
while let num = Int(strs[index]), num > 0 {
    sum += sum
    index += 1
}
print(sum)

4.隐试解包:使用的时候默认是解包了,但是它是可以为nil的,可以进行可选绑定取值不报错

var age: Int! = 10
var age2 = age;
age2就是隐试解包,它是可以进行判断是否为空,编译器不会警告
if age2 != nil {
    
}

实际开发中,很少使用隐试解包