Swift optional type是用enum去實作,以下為Optional type的部分source code:
由上面我們可以知道:
- 一個非nil的值會被指定到case some(Wrapped),而一個nil的值會被指定到case none
- 比較兩個值是否相等時,只要有一個變數是optional,在進行比較前,兩個變數都會被轉換成Optional type,再進行比較
Note: 詳細原文說明在[ref 1]的第386行
ref 1: https://github.com/apple/swift/blob/main/stdlib/public/core/Optional.swift