728x90
var
- νλ² μ μΈν΄λ λ³μμ κ°μ λ°κΏ μ μλ€.
val
- νλ² μ μΈν΄λ λ³μμ κ°μ λ°κΏ μ μλ€.
- valμ ν λΉλ κ°μ²΄λ₯Ό λ°κΏ μ μμ λΏμ΄μ§ κ°μ²΄ λ΄λΆμ μμ±μ λ³κ²½ν μ μλκ²μ μλλ€.
μμ
- νλ² μ μΈν΄λ λ³μμ κ·Έ 무μλ λ°κΏ μ μλ€. μ»΄νμΌ μμ μ κ²°μ λλ μ λ λ°κΏ μ μλ κ°μ΄λ€.
- μ μΈν λ valμμ constλ₯Ό λΆμ΄λ©΄ λλ€.
- μμλ‘ μ μΈν μ μλκ²μ κΈ°λ³Έ μλ£νλ§ κ°λ₯νλ€.(Stringμλ£ν ν¬ν¨) λ°νμμ μμ±λ μ μλ μΌλ°μ μΈ λ€λ₯Έ ν΄λμ€μ κ°μ²΄λ€μ λ΄μ μ μλ€.
- μμλ ν΄λμ€μ μμ±μ΄λ μ§μλ³μλ‘ μ¬μ©ν μ μλ€.
- λ°λμ companion objectμ μ μΈνμ¬ κ°μ²΄μ μμ±κ³Ό μκ΄μμ΄ ν΄λμ€μ κ΄κ³λ κ³ μ μ μΈ κ°μΌλ‘λ§ μ¬μ©νκ² λλ€.
- μμμ μ΄λ¦μ λ§λ€λλ κ΄λ‘μ μΌλ‘ λλ¬Έμμ μΈλλ°λ₯Ό μ¬μ©νμ¬ μμ±νλ€. (ex : CONST_A)
μμ
fun main(){
val foodCourt = FoodCourt()
foodCourt.searchPrice(FoodCourt.FOOD_YEONUH)
foodCourt.searchPrice(FoodCourt.FOOD_PIZZA)
foodCourt.searchPrice(FoodCourt.FOOD_GGOMJANGUH)
foodCourt.searchPrice(FoodCourt.FOOD_DACKBAL)
}
class FoodCourt{
fun searchPrice(foodName: String){ // μμ μ΄λ¦μ μ
λ ₯λ°μ κ°κ²©μ μΆλ ₯νλ€.
val price = when(foodName){ // whenμΌλ‘ μμλ‘ μ μλ κ°κ°μ μμμ λ§λ κ°κ²©μ μ€μ νλ€.
FOOD_DACKBAL -> 20000
FOOD_GGOMJANGUH -> 25000
FOOD_PIZZA -> 15000
FOOD_YEONUH -> 1000000
else -> 0
}
println("${foodName}μ κ°κ²©μ ${price}μ μ
λλ€.")
}
// μ΄ ν΄λμ€λ₯Ό μ¬μ©ν μ¬λλ€μ νΈλμ½νΈμ μ΄λ€ μμμ΄ μλμ§ λͺ¨λ₯΄λ―λ‘, μμμ μμλ¬ μ μΈνλ€.
companion object{
const val FOOD_DACKBAL = "λλ°"
const val FOOD_GGOMJANGUH = "κΌΌμ₯μ΄"
const val FOOD_PIZZA = "νΌμ"
const val FOOD_YEONUH = "μ°μ΄"
}
}
μ°μ΄μ κ°κ²©μ 1000000μ μ
λλ€.
νΌμμ κ°κ²©μ 15000μ μ
λλ€.
κΌΌμ₯μ΄μ κ°κ²©μ 25000μ μ
λλ€.
λλ°μ κ°κ²©μ 20000μ μ
λλ€.
- λ³μλ₯Ό μ¬μ©νμ§ μκ³ μμλ₯Ό μ¬μ©νλ μ΄μ λ
- λ³μμ κ²½μ° λ°νμμ κ°μ²΄λ₯Ό μμ±νλλ° μκ°μ΄ λ μ€λκ±Έλ € μ±λ₯μ΄ μ νλ μ μλ€.
- λ°λΌμ λ κ³ μ μ μΌλ‘ μ¬μ©ν κ°μ μμλ₯Ό ν΅ν΄ κ°μ²΄μ μμ± μμ΄ λ©λͺ¨λ¦¬μ κ°μ κ³ μ νμ¬ μ¬μ©ν¨μΌλ‘μ¨ μ±λ₯μ ν₯μμν¬ μ μλ€.
λ¦μ μ΄κΈ°ν(lateinit)
- μ½νλ¦°μμλ κ°μ²΄λ₯Ό μ μΈν λ μλ£νμ ν λΉνμ§ μμ κ²½μ°λ μ»΄νμΌλ¬κ° νμ©νμ§ μλμ§λ§ κ²½μ°μ λ°λΌμλ λ³μμ κ°μ²΄λ₯Ό ν λΉνλ κ²μ μ μΈκ³Ό λμμ ν μ μμ λλ μλ€.
- var μμ lateinitμ μ μΈνλ©΄ μΌλ¨ λ³μλ§ μ μΈνκ³ μ΄κΈ°κ°μ ν λΉμ λμ€μ ν μ μλλ‘ νλ ν€μλλ€.
- lateinit var λ³μμ μ νμ¬νμ΄ μλ€.
- μ΄κΈ°κ° ν λΉ μ κΉμ§ λ³μλ₯Ό μ¬μ©ν μ μλ€. μ¬μ©νλ € νλ©΄ μλ¬κ° λ°μνλ€.
- κΈ°λ³Έ μλ£νμλ μ¬μ©ν μ μλ€. (StringμμΈ)
- ::(λ³μ).isInitialized
- λ³μ μμ μ½λ‘ μ λκ° λΆμ΄κ³ , λ³μ λ€μ .isInitializedλ₯Ό λΆμ΄λ©΄ λλ€.
- lateinitλ³μμ μ΄κΈ°νλ₯Ό νμλμ§ μ¬λΆλ₯Ό νμΈν λ μ΄λ€.
μμ
fun main(){
val a = LateInitSample()
println(a.getLateInitText())
a.text = "μλ‘ ν λΉλ κ°"
println(a.getLateInitText())
}
class LateInitSample{
lateinit var text: String
fun getLateInitText(): String{
if(::text.isInitialized){
return text
}
else{
return "κΈ°λ³Έκ°"
}
}
}
κΈ°λ³Έκ°
μλ‘ ν λΉλ κ°
μ§μ° λ리μ μμ±(lazy delegate properties)
- λ³μλ₯Ό μ¬μ©νλ μμ κΉμ§ μ΄κΈ°νλ₯Ό μλμΌλ‘ λ¦μΆ°μ€λ€.
- val λ³μμ byλΌλ ν€μλλ₯Ό μ¬μ©νμ¬ lazyλΌλ λλ€ν¨μ ννμ μ΄κΈ°ν ν¨μλ₯Ό μ¬μ©νλ€.
- μ½λμμλ μ μΈμ μ¦μ κ°μ²΄λ₯Ό μμ± λ° ν λΉνμ¬ λ³μλ₯Ό μ΄κΈ°ν νλ ννλ₯Ό κ°μ§κ³ μμ§λ§ μ€μ μ€νμμλ val λ³μλ₯Ό μ¬μ©νλ μμ μ μ΄κΈ°ν κ³Όμ μ μ§ννλ€.
- μ΄λ‘μ¨ μ½λμ μ€νμκ°μ μ΅μ ν ν μ μλ€.
- λλ€ν¨μλ‘ μ΄κΈ°νκ° μ§νλκΈ° λλ¬Έμ μ€κ΄νΈ μμ μ¬λ¬ ꡬ문μ λ£μ μ μκ³ , λ§μ§λ§ ꡬ문μ κ²°κ³Όκ° λ³μμ ν λΉλλ€.
val a: Int by lazy{
println("initializing")
7}
println(a) // μ΄ μμ μ aκ° 7λ‘ μ΄κΈ°νλλ€.
μμ
fun main(){
val number: Int by lazy {
println("μ΄κΈ°νλ₯Ό ν©λλ€")
7
}
println("μ½λλ₯Ό μμν©λλ€")
println(number)
println(number)
}
μ½λλ₯Ό μμν©λλ€
μ΄κΈ°νλ₯Ό ν©λλ€
7
7
- numberλ₯Ό μ²μ μΆλ ₯ν λ lazyν¨μλ₯Ό ν΅ν΄ μ΄κΈ°νκ° μ§νλ¨μ μ μ μλ€.
- λλ²μ§Έ numberλ₯Ό μΆλ ₯ν λ μ΄λ―Έ μ΄κΈ°ν νκΈ° λλ¬Έμ λ€μ μ΄κΈ°ν ꡬ문μ μ€ννμ§ μλλ€.
π‘μμ, λ¦μ μ΄κΈ°ν, μ΄κΈ°ν μ§μ°μ μν©μ λ°λΌ λ³μλ₯Ό μ¬μ©νλ λ°©λ²μ μ‘°κΈ λ μΈμΈνκ² μ‘°μ ν μ μλ€.
728x90
'μλλ‘μ΄λπ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ½νλ¦°] μ½λ£¨ν΄ (0) | 2024.07.09 |
---|---|
[μ½νλ¦°] λΉνΈμ°μ° (0) | 2024.07.09 |
[μ½νλ¦°] 컬λ μ ν¨μ (0) | 2024.07.08 |
[μ½νλ¦°] Set & Map (0) | 2024.07.08 |
[μ½νλ¦°] Data Class & Enum Class (1) | 2024.07.08 |