在我的项目中,在转换成swift 3后,一个新函数出现在我的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被认为比所有非可选值都小.

此功能已被删除(SE-0121 – Remove Optional Comparison Operators),上述代码将无法编译

error: value of optional type 'Int?' not unwrapped; did you mean to use '!' or '?'?

显然,Swift migrator通过以下方式为您解决了这个问题:

如果你删除了这个定义,那么你应该看到

Swift相关问答推荐

Swift 5.10:无法从非隔离的deinit访问属性*,这是Swift 6中的错误''''

从后台线程获取@发布属性的值(不更改它)是正确的吗?

是否可以循环遍历SWIFT子类并访问它们的静态变量S?

如何才能在同一线程上调用类中的每个方法,而不对每个调用使用同步块?

如果通过计时器循环运行,则检索CPU利用率百分比的SWIFT脚本运行良好.似乎在没有计时器的情况下停留在初始百分比上

swift:只要框架名称中有一个带有框架名称的公共实体,就指定框架中公共 struct 的路径

物理主体未与 spritekit Swift 的网格图案上的纹理图像对齐

Swift数据关系

为什么自定义串行队列的目标是全局队列时,Swift中不会并发执行?

If 语句在 Swift 中有 2 个日期

从 actor 的 init 方法调用方法

是否可以使用 .task 修饰符更新基于两个值的视图

Swift-SceneKit-无法从art.scnassets加载.scn文件

将基于MyProtocol的泛型函数的参数更改为使用存在的any MyProtocol或some MyProtocol是否会受到惩罚?

类型 '()' 不能符合 View (除非它肯定是 View,这次没有恶作剧)

如何仅将 SwiftUI 不透明度应用于父视图?

如何在 Xcode 中的 UITests 下以通用方式访问后退栏按钮项?

如何删除桥头而不出错?

Swift - 获取本地日期和时间

如何在 Swift 中遍历 struct 属性?