答案 0 :(得分:5)
val res1 = bool ?: a == b
与
相同val res1 = (bool ?: a) == b
bool
不是null
(它是true
),所以(bool?:a)返回true
,而true == b
是false
,结果存储在res1中。
这是因为?:
将左侧绑定到其右侧的第一个可能参数,该参数仅是a
而不是您期望的a == b
。
您可以在https://kotlinlang.org/docs/reference/grammar.html#expressions上进行查找
如果平等(==
的优先级高于猫王(?:
),那将是您的预期结果。