In swift when print optional value when non optional

In swift when print optional value when non optional

代码结果为:
num1 是可选的 (5)
num2 是可选的 (5)
num2 是 5
我想知道为什么在 if{} 中 num2 是一个可选值,但是打印 "num2 is 5"

var optionalNum : Int? = 5
let num1 = optionalNum
print("num1 is \(num1)")

if let num2 = optionalNum {
    print("num2 is \(optionalNum)")
    print("num2 is \(num2)")
} else {
    print("optionalNum does not hold a value")

}

写的时候

if let num2 = optionalNum { ...

您正在执行可选绑定

用简单的英语就是

If optionalNum contains a value, then

  1. create a new constant num2 containing that value
  2. AND execute the block inside the { ... }
  3. AND make available the new num2 constant inside the block

所以块内 num2 不是可选的。因此,当您打印它时,您会得到普通值。这就是它打印

的原因
num2 is 5