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

时间:2018-10-31 08:20:24

标签: 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
  }
}

我试图了解代码的作用,并发现我认为代码中的_?与众不同。

我猜它是未使用的可选内容,因为_意味着我们将不使用特定变量,因此我们不在乎变量的名称,并且?是可选语法。

谢谢您的帮助!

1 个答案:

答案 0 :(得分:5)

CREATE TABLE TICKET ( Tid VARCHAR(15) NOT NULL, Price INT NOT NULL, Cid VARCHAR(15) NOT NULL, PRIMARY KEY(Tid), CONSTRAINT fk_ticket_cid FOREIGN KEY (Cid) REFERENCES CUSTOMER(Cid) ON DELETE CASCADE ON UPDATE CASCADE ); 是匹配任何内容的通配符模式,例如,

_可选模式,是x?的快捷方式,它与 不是.some(x)的可选内容。

这是两者的结合:nil与任何符合 不是_?

如果左操作数为nil,则

case (nil, _?)匹配 正确的操作数不是。您也可以将其写为nil

Xcode可以在从旧版Swift迁移期间插入此函数, 比较Strange generic function appear in view controller after converting to swift 3