swift - `_?` 在 Swift 中是什么意思?

标签 swift

几天前,我将旧的 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
  }
}

我试图理解代码的作用,并在代码中找到我认为有点不寻常的_?

我猜它是未使用的可选的,因为 _ 意味着我们不会使用特定的变量,所以我们不关心变量的名称,而 ? 是可选的语法.

感谢您的帮助!

最佳答案

_ 是匹配任何内容的通配符模式,参见示例

x?可选模式,是.some(x)的快捷方式,它匹配 不是 nil 的可选值。

这里我们有两者的组合:_? 匹配任何是 不是 nil

case (nil, _?) 如果左操作数为 nil 则匹配 而正确的操作数不是。您也可以将其写成 case (.none, .some)

Xcode 可以在从旧的 Swift 版本迁移的过程中插入这个函数, 比较 Strange generic function appear in view controller after converting to swift 3 .

关于swift - `_?` 在 Swift 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53079027/

相关文章:

swift 2.0 : can not pass generic as a parameter

ios - 我可以在一个容器应用程序上创建两个自定义键盘吗

ios - 配色方案的 Swift 扩展和枚举

swift UIDatePicker 更改字体、字体颜色、字体大小等

ios - [错误] : Type info TC, N,D 尚不支持

ios - 如何在 UITableViewCell 中获取屏幕宽度?

swift - IAd 横幅将整个 skscene 向上移动

swift - animateWithDuration 在 URLSession 中写入时调用时间过长

ios - 如何正确设置 Core Data Stack 到 iOS 和 Swift 中的第一个 View Controller ?

ios - 文本字段上的位数