Data Types
Nullable Types
Use ? and ?: to handle missing values.
null
A nullable type can hold either a value or `null`.
Nullable Types
NullableTypes.kt
Replay: real traced execution (multi-file project)
fun main() {
val nickname: String? = "kai"
val display = nickname ?: "guest"
val length = display.length
println("display=$display")
println("length=$length")
}
fun main() {
val nickname: String? = null
val display = nickname ?: "guest"
val length = display.length
println("display=$display")
println("length=$length")
}
fun main() {
val nickname: String? = "lee"
val display = nickname ?: "guest"
val length = display.length
println("display=$display")
println("length=$length")
}
nickname ← kai, display ← kai, length ← 3
1fun main() {2 val nickname→ kai: String? = "kai" //@nickname=null, "lee"3 val display→ kai = nicknamekai ?: "guest"4 val length→ 3 = display.length356 println("display=$displaykai")7 println("length=$length3")8}outputdisplay=kai length=3
nickname ← null, display ← guest, length ← 5
1fun main() {2 val nickname→ null: String? = null3 val display→ guest = nicknamenull ?: "guest"4 val length→ 5 = display.length556 println("display=$displayguest")7 println("length=$length5")8}outputdisplay=guest length=5
nickname ← lee, display ← lee, length ← 3
1fun main() {2 val nickname→ lee: String? = "lee"3 val display→ lee = nicknamelee ?: "guest"4 val length→ 3 = display.length356 println("display=$displaylee")7 println("length=$length3")8}outputdisplay=lee length=3
Follow the Fallback
nicknamestarts askai.display = nickname ?: "guest"useskaibecause it is not null.display.lengthis3.- The program prints
display=kaiandlength=3. | nickname | display | length | | --- | --- | --- | | null | guest | 5 | | kai | kai | 3 | | lee | lee | 3 |
Exercise: NullableTypes.kt
Reproduce display=kai and length=3, then use the pinned nickname values null and lee to predict each display and length.