Swift 运算符优先级问题

Swift trouble with operator priority

已更新

表达式:a ?? 0 + b,其中 aCGFloat?bCGFloata != nil

具体例子:

//a == 99
//b == 253
let t = ((a ?? 0) + b)
let t2 = (a ?? 0 + b)
//t == 352
//t2 == 99

为什么我只设置括号结果是正确的:(a ?? 0) + b

两个结果都是“正确的”。它们可以不同,因为 + 的优先级高于 ??。特别是,如果 a != nil:

 t  == (a ?? 0) + b == a! + b
 t2 == (a ?? 0 + b) == a ?? (0 + b) == a!

可以在 Operator Declarations.

找到运算符优先级的完整列表