在我的项目中,转换为swift 3之后,在我的ViewController课程之前出现了一个新函数:
ViewController
fileprivate func < <T : Comparable>(lhs: T?, rhs: T?) -> Bool { switch (lhs, rhs) { case let (l?, r?): return l < r case (nil, _?): return true default: return false } }
此功能有什么作用?我为什么需要它?
这太有趣了。在最新的Swift 3之前,您可以比较 可选 值,例如
let a: Int? = nil let b: Int? = 4 print(a < b) // true
并且nil被认为小于所有非可选值。
nil
此功能已被删除(SE-0121-删除可选的比较运算符),并且以上代码将无法在Xcode 8 beta 6中使用
错误:可选类型'Int?'的值 没有包装; 你是说用'!' 要么 '?'?
显然,Swift迁移器通过提供一个自定义<运算符为您解决了该问题,该运算符采用两个可选操作数,因此“恢复”了旧的行为。
<
如果删除该定义,则应该看到在代码中进行比较的位置。然后尝试更新您的代码并删除可选的比较。