2022. 12. 5. 14:57γ_Study/AndroidStudio
λλ€ν¨μ π¸.•*¨*•¸.•*¨*•¸.•*¨*•¸.•*¨*•
λ³Έ μλ£λ κ°μμλ£λ₯Ό μ°Έκ³ νκ³ μμ±νμμ΅λλ€.
λλ€ν¨μ { 맀κ°λ³μ -> ν¨μ λ³Έλ¬Έ}
λλ€ν¨μλ μ΅λͺ ν¨μ μ μκΈ°λ²μΌλ‘ fun ν€μλλ₯Ό μ΄μ©νμ§λ μκ³ ν¨μ μ΄λ¦λ μλ€.
λλ€ν¨μλ {}λ‘ νννλ©° ->(νμ΄ν)κ° μμΌλ©° μΌμͺ½μ 맀κ°λ³μ μ€λ₯Έμͺ½μ ν¨μ λ³Έλ¬Έμ΄λ€.
ν¨μμ λ°νκ°μ ν¨μ λ³Έλ¬Έμ λ§μ§λ§ ννμμ΄λ€.
val sum = {no1:Int, no2:Int -> no1+no2}
맀κ°λ³μ μλ λλ€ν¨μ
νμ΄ν¨ μΌμͺ½μ΄ 맀κ°λ³μλ₯Ό μ μνλ λΆλΆμΈλ° 맀κ°λ³μκ° μμ κ²½μ° λΉμλκ±°λ νμ΄νκΉμ§ μλ΅ κ°λ₯νλ€.
λ§€κ° λ³μκ° 1κ°μΈ λλ€λ³μ : it ν€μλλ₯Ό μ΄μ©ν μ μλ€.
package com.example.ch3
fun main() {
val some = {no: Int -> println(no) }
some(20)
val some2 :(Int) -> Unit = { println(it) }
some2(30)
val some3 = { println(it) } // : value -> Unit μ€λ₯
some3(30)
}
λλ€ ν¨μμ λ°ν
λλ€ ν¨μμμλ return λ¬Έμ μ¬μ©ν μ μμΌλ©° λ°νκ°μ λ³Έλ¬Έμ λ§μ§λ§ μ€μ μ€ν κ²°κ³Όμ΄λ€. λμ΄μ°κΈ°λ₯Ό μ£Όμν΄μΌνλ€.
package com.example.ch3
fun main() {
//val some = {no1: Int, no2:Int -> return no1*no2 } // return μ μ¬μ©ν μ μμ
// val some2 = { no1 : Int, no2:Int -> println("lamda function") no1 * no2 } // λμ΄μ°κΈ°
val some3 = { no1 : Int, no2:Int -> println("lamda function")
no1 * no2 }
println("result ${some3(10,20)}")
}
ν¨μ νμ κ³Ό κ³ μ°¨ ν¨μ
ν¨μ νμ μ μΈ
ν¨μ νμ μ΄λ ν¨μλ₯Ό μ μΈν λ λνλ΄λ 맀κ°λ³μμ λ°ν νμ μ μλ―Ένλ€.
νμ μ λ³μΉμ μ μΈνλ ν€μλλ typealias μ΄λ©° λ³μμ²λΌ μ¬μ©νλ©΄ λλ€. 맀κ°λ³μ νμ μ μ μΆν μ μλ€λ©΄ νμ μ μΈμ μλ΅ν μ μλ€.
package com.example.ch3
typealias MyInt = Int
typealias MyFunType = (Int, Int) -> Boolean
fun main() {
val data1 : Int =10
val data2 : MyInt = 20
val someFun : MyFunType = {no1,no2 -> no1>no2}
println(someFun(10,20))
println(someFun(100,20))
}
κ³ μ°¨ν¨μ : ν¨μλ₯Ό 맀κ°λ³μλ‘ μ λ¬λ°κ±°λ λ°ννλ ν¨μλ₯Ό μλ―Ένλ€. μ¦, ν¨μμ ν¨μ
package com.example.ch3
fun hofFun(arg: (Int)->Boolean) : () -> String{
val result = if(arg(10)){
"valid"
}else {
"invalid"
}
return {"hotfun result : $result"}
}
fun main() {
val result = hofFun { no -> no>0 }
println(result())
}
λ μμ μ±
λ(null) μ΄λ κ°μ²΄κ° μ μΈλμμ§λ§ μ΄κΈ°νλμ§ μμ μνλ₯Ό μλ―Ένλ€. λμΈ μνμ κ°μ²΄λ₯Ό μ΄μ©νλ©΄ λ ν¬μΈνΈ μμΈ(NullPountException)μ΄ λ°μνλ€. λ μμ μ±μ΄λ λ ν¬μΈνΈ μμΈκ° λ°μνμ§ μλλ‘ μ½λλ₯Ό μμ±νλ κ²μ΄λ€. μ¦, μ€λ₯λ₯Ό μ¬μ μ μ°¨λ¨νλ κ²
Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
package com.example.ch3
fun main() {
val data: String? = null //?λΌ null κ°λ₯
val length = if(data == null){
0
}else{
data.length
}
println("Data length : $length")
}
νλ‘κ·Έλλ° μΈμ΄κ° λ μμ μ±μ μ§μνλ€λ κ²μ κ°μ²΄κ° λμΈ μν©μμ μμΈκ° λ°μνμ§ μλλ‘ μ°μ°μλ₯Ό λΉλ‘―ν΄ μ¬λ¬κΈ°λ²μ μ 곡νκ² λ€λ μλ―Έμ΄λ€.
μμ μ± μ°μ°μ (?.)
λ νμ© μ°μ°μ ?λ‘ μ μΈνλ©° μ΄ λ³μμ μ κ·Όν λλ ?. μ°μ°μλ₯Ό μ΄μ©ν΄μΌ νλ€.
μλΉμ€ μ°μ°μ(?:) : λμΌ λ λμ ν΄μΌνλ κ°μ΄λ μ€νν΄μΌ νλ κ΅¬λ¬Έμ΄ μλ κ²½μ° μ΄μ©
μμΈ λ°μ !! : κ°μ²΄κ° λμΌ λ μμΈλ₯Ό μΌμΌν€λ μ°μ°μ
Exception in thread "main" java.lang.NullPointerException