Swift 运算符优先级问题
Swift trouble with operator priority
已更新
表达式:a ?? 0 + b
,其中 a
是 CGFloat?
,b
是 CGFloat
和 a != 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!
找到运算符优先级的完整列表
已更新
表达式:a ?? 0 + b
,其中 a
是 CGFloat?
,b
是 CGFloat
和 a != 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!
找到运算符优先级的完整列表