1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
data class M(val int: Int?)

@Test
fun test() {
val m1 = M(0)
val m2 = M(1)
val m3 = M(0)

val i = (m1.int ?: 0) + (m2.int ?: 0) + (m3.int ?: 0)

val j = (m1.int ?: 0)
+(m2.int ?: 0)
+(m3.int ?: 0)

println(i)
println(j)
}

打印结果i j分别是1和0,百思不得骑姐。
后来发现kotlin是将val j = (m1.int?:0)当做一行,直接将m1.int赋值给了j
+(m2.int?:0)(m3?:int?:0)当做另起一行了。

你要是++(int)当做一行还能理解,+(int)居然不报错是为啥。。谁加谁啊
以后碰到运算j这种情况,在最外面多加个括号吧