几天前,我将旧的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
}
}
我试图了解代码的作用,并发现我认为代码中的_?
与众不同。
我猜它是未使用的可选内容,因为_
意味着我们将不使用特定变量,因此我们不在乎变量的名称,并且?
是可选语法。
谢谢您的帮助!
答案 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。