null
์ฝํ๋ฆฐ์์๋ null๊ฐ์ ํ์ฉํ์ง ์๋๋ค.
//์ด๊ธฐํํ์ง ์์ ์๋ฌ ๋ฐ์
val a : String
//null๊ฐ์ผ๋ก ์ด๊ธฐํํด์ ์๋ฌ ๋ฐ์
val a : String = null
//OK
val a : String? = null
#์ฝํ๋ฆฐ์์ null๊ฐ์ ํ์ฉํ๋ ค๋ฉด ์๋ฃํ์ ์ค๋ฅธ์ชฝ์ ? ๊ธฐํธ๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค.
lateinit
lateinit var a : String
a = "hello"
println(a)
#์๋๋ก์ด๋ ๊ฐ๋ฐ ์ ์ด๊ธฐํ๋ฅผ ๋์ค์ ํ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋ lateinit ํค์๋๋ฅผ ๋ณ์ ์ ์ธ ์์ ์ถ๊ฐํ๋ฉด ๋๋ค.
lateinit ์ฌ์ฉ ์กฐ๊ฑด
#var ๋ณ์์์๋ง ์ฌ์ฉ๊ฐ๋ฅ
#null๊ฐ์ผ๋ก ์ด๊ธฐํํ ์ ์๋ค.
#์ด๊ธฐํ ์ ์๋ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
#Int, Long, Double, Float์์๋ ์ฌ์ฉ ๋ถ๊ฐ
lazy
val str: String by lazy {
println("์ด๊ธฐํ")
"hello"
}
println(str) //์ด๊ธฐํ; hello
println(str) //hello
#val์ ์ธ ๋ค์ by lazy๋ธ๋ก์ ์ด๊ธฐํ์ ํ์ํ ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ๋ง์ง๋ง ์ค์๋ ์ด๊ธฐํํ ๊ฐ์ ์์ฑํ๋ค.
lazy ์ฌ์ฉ์กฐ๊ฑด
#var์์๋ง ์ฌ์ฉ๊ฐ๋ฅ
!!
val name: String? = "ํค๋ค๋ฆฌ"
val name2: String = name //์๋ฌ
val name3: String? = name //OK
val name4: String = name!! //OK
#๋ณ์ ๋ค์ !!์ ์ถ๊ฐํ๋ฉด null๊ฐ์ด ์๋์ ๋ณด์ฆํ๊ฒ ๋๋ค.
?.
val str: String? = null
var upperCase = if (str != null) str else null //null
upperCase = str?.toUpperCase //null
#๋ฉ์๋ ํธ์ถ์ ?. ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด null๊ฐ์ด ์๋ ๊ฒฝ์ฐ์๋ง ํธ์ถ๋๋ค.
?:
val str: String? = null
var upperCase = if (str != null) str else null //null
upperCase = str?.toUpperCase ?: "์ด๊ธฐํํ์์ค" //์ด๊ธฐํํ์์ค
# ?. ํธ์ถ์ null์ด ์๋ ๊ธฐ๋ณธ๊ฐ์ ๋ฐํํ๊ณ ์ถ์ ๋๋ ์๋น์ค ์ฐ์ฐ์(?:)๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ค.
'๊ฐ๋ฐ ํ์์บก์ > Kotlin' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin] ๋๋ค์ / SAM๋ณํ (0) | 2020.08.29 |
---|---|
[Kotlin] ๋ฆฌ์คํธ / ๋งต / ์งํฉ (0) | 2020.08.29 |
[Kotlin] ์ธํฐํ์ด์ค (0) | 2020.08.27 |
[Kotlin] ํด๋์ค (0) | 2020.08.27 |
[Kotlin] ์ ์ด๋ฌธ(if, when, for, while) (0) | 2020.08.25 |