с#
var a: Int? = 0
fun main() {
thread {
sleep(1000)
a = null
}
thread {
if(a != null) // здесь a может быть не равен нулл
return ...
println(a.toString()) // а тут неизвестно
}
}
Size: a a a
с#
с#
AM
с#
Y
guardпример как могло бы быть
val a = a,
val b = b {
a.call(b)
} ?: run {
Log(...)
}
с#
guardпример как могло бы быть
val a = a,
val b = b {
a.call(b)
} ?: run {
Log(...)
}
Y
А
с#
А
guardпример как могло бы быть
val a = a,
val b = b {
a.call(b)
} ?: run {
Log(...)
}
с#
I
I
if (a != null && b != null)
?I
AM
if (a != null && b != null)
?AN
I
class C {
var x: String? = "OK"
val i: Int? = 1
fun test() {
(x to i).let { (x, i) ->
if (x == null || i == null) return
println(x + i)
}
}
}
AM
class C {
var x: String? = "OK"
val i: Int? = 1
fun test() {
(x to i).let { (x, i) ->
if (x == null || i == null) return
println(x + i)
}
}
}
val x = x
val i = i
с#
class C {
var x: String? = "OK"
val i: Int? = 1
fun test() {
(x to i).let { (x, i) ->
if (x == null || i == null) return
println(x + i)
}
}
}