站在汇编角度深入了解 Swift(十四)

483 阅读1分钟

可选项的本质

  • 可选项的本质是什么
enum Optional<Wrapped>: ExpressibleByNilLiteral {
    case none
    case some(Wrapped)
    public init(_ value: Wrapped) {
        
    }
}
var age: Int? = 10
等价于
var age: Optional<Int> = .some(10)
var age: Int? = 20

switch age {
case let v:
    print(v)
default:
    break
}

// 如果 age = nil 那么,这个 case let v? 就不会执行
switch age {
case let v?:
    print(v)
default:
    break
}

其实就相当于
switch age {
case let .some(v):
    print(v)
default:
    break
}

--------------------------执行结果--------------------------
Optional(20)
20

溢出运算符

  • Swift 的算数运算符出现 溢出时会抛出运行时错误
  • Swift 有溢出运算符(&+、&-、&*),用来支持溢出运算

思考

  1. 数据结构是什么样子的?

    可以看成是二叉树

Optional的数据结构