几天前,我将旧的Xcode 8项目转换为Xcode 9中的Swift 4.我注意到在代码上方生成了额外的Swift代码以及解释.
这是它的样子:
// FIXME: comparison operators with optionals were removed from the Swift Standard Libary.
// Consider refactoring the code to use the non-optional operators.
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
}
}
Run Code Online (Sandbox Code Playgroud)
我试图理解代码的作用,并在代码中找到我认为有点不寻常_?的东西.
我猜它是未使用的可选项,因为这_意味着我们不会使用特定的变量,因此我们不关心变量的名称,?而是可选的语法.
谢谢您的帮助!
_是与任何东西匹配的通配符模式,例如参见
并且x?是可选模式,快捷方式.some(x),它匹配可选的不是nil.
在这里,我们将两者结合起来:_?匹配任何不符合的东西nil.
case (nil, _?)如果左操作数是nil
,则匹配,右操作数不匹配.你也可以把它写成case (.none, .some).
Xcode可以在从较旧的Swift版本迁移期间插入此函数,比较转换为swift 3后在视图控制器中出现的Strange泛型函数.
| 归档时间: |
|
| 查看次数: |
502 次 |
| 最近记录: |