Swift 的 ?? 運(yùn)算符不支持這種類型不匹配的操作耕陷,確實(shí)名秀,它無法決定當(dāng)表達(dá)式兩側(cè)不共享同樣的基礎(chǔ)類型時(shí)兰珍,到底應(yīng)該使用哪一個(gè)類型。不過梯嗽,只是為了在字符串插值中使用可選值這一特殊目的的話齿尽,添加一個(gè)我們自己的運(yùn)算符也很簡(jiǎn)單。讓我們把它叫做 ???:
```
infix operator ???: NilCoalescingPrecedence
public func ???<T>(optional: T?, defaultValue: @autoclosure () -> String) -> String {
switch optional {
case let value?: return String(describing: value)
case nil: return defaultValue()
}
}
```