为什么res1和res2不同?唯一的区别是有一个封闭的支架。
val res1 = bool ?: a == b
是相同的
val res1 = (bool ?: a) == b
bool
是不是null
(这是true
),所以(布尔:a)返回true
,并true == b
是false
,存储在RES1结果。
这是因为?:
将左侧绑定到其右侧的第一个可能参数,这仅仅是a
(而非a == b
您所期望的)参数。
如果Equality()的优先级高于Elvis()的优先级,那么您可以在https://kotlinlang.org/docs/reference/grammar.html#expressions上查找,这将是您期望的结果。==
?: