Swift ?? 运算符不支持类型不匹配解决方案

Swift 的 ?? 运算符不支持这种类型不匹配的操作,确实,它无法决定当表达式两侧不共享同样的基础类型时,到底应该使用哪一个类型。不过,只是为了在字符串插值中使用可选值这一特殊目的的话,添加一个我们自己的运算符也很简单。让我们把它叫做 ???:

```

infix operator ???: NilCoalescingPrecedence

public func ???(optional: T?, defaultValue: @autoclosure () -> String) -> String {

switch optional {

case let value?: return String(describing: value)

case nil: return defaultValue()

}

}

```

你可能感兴趣的:(Swift ?? 运算符不支持类型不匹配解决方案)