Swift(SwiftUI)中=与==同存一行的代码语法含义解析
多运算符同行情式的运算逻辑说明
你看到的写法是C系语言(含Swift、Java、OC、C++等)的通用语法,核心逻辑由运算符优先级规则决定,不存在语法冲突:
- 相等比较运算符
==的运算优先级远高于赋值运算符=,同一行代码中会优先执行所有比较运算,得到最终结果后再执行赋值操作。
形如variable1 = variable2 == variable3的执行逻辑
代码会严格按照两步执行:
- 先执行右侧的比较逻辑:判断
variable2和variable3的值是否相等,这一步会返回一个布尔类型的结果,值只能是true(相等)或者false(不相等) - 把第一步得到的布尔结果,直接赋值给左侧的
variable1
对应你给出的Firebase代码拆解
你贴的代码:self.isFromCurrentUser = fromId == Auth.auth().currentUser?.uid
和下面拆分后的写法逻辑100%等价,只是写法更紧凑:
// 第一步:判断消息发送方ID是否等于当前登录用户的UID let checkResult = (fromId == Auth.auth().currentUser?.uid) // 第二步:把判断结果赋值给实例属性 self.isFromCurrentUser = checkResult
常见误区提醒:不要误以为代码会先执行
variable1 = variable2的赋值再做比较,赋值运算符优先级是所有常用运算符里最低的,永远会先算完等号右侧的全部逻辑、拿到确定的返回值,才会把值赋给等号左侧的变量。
内容的提问来源于stack exchange,提问作者Tomas
相关产品推荐
相关产品推荐

