Kesetaraan struktural a == b
diterjemahkan ke
a?.equals(b) ?: (b === null)
Oleh karena itu, bila dibandingkan dengan null
, persamaan struktural a == null
diterjemahkan menjadi persamaan referensial a === null
.
Menurut dokumen , tidak ada gunanya mengoptimalkan kode Anda, jadi Anda dapat menggunakan a == null
dan a != null
Perhatikan bahwa jika variabel adalah properti yang bisa berubah, Anda tidak akan bisa mentransmisikannya ke tipe non-nullable di dalam if
pernyataan (karena nilainya mungkin telah dimodifikasi oleh utas lain) dan Anda harus menggunakan operator panggilan aman denganlet
sebagai gantinya.
Operator panggilan aman ?.
a?.let {
println(it)
println("not null")
}
Anda dapat menggunakannya bersama operator Elvis.
Operator Elvis ?:
(Saya menebak karena tanda interogasi terlihat seperti rambut Elvis)
a ?: println("null")
Dan jika Anda ingin menjalankan blok kode
a ?: run {
println("null")
println("The King has left the building")
}
Menggabungkan keduanya
a?.let {
println("not null")
println("Wop-bop-a-loom-a-boom-bam-boom")
} ?: run {
println("null")
println("When things go null, don't go with them")
}