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
这种情况,在最外面多加个括号吧