λλ€ ν¨μμ κ³ μ°¨ ν¨μ
λλ€ ν¨μ(λλ€μ)
- μ΅λͺ ν¨μ(anonymous funciton) μ μ κΈ°λ²
- μ£Όλ‘ ν¨μλ₯Ό κ°λ¨νκ² μ μν λ μ¬μ©νκΈ° λλ¬Έμ κ³ μ°¨ ν¨μμ λ§μ΄ μ¬μ©
* κ³ μ°¨ν¨μ : ν¨μλ₯Ό 맀κ°λ³μλ‘ μ λ¬λ°κ±°λ λ°ννλ ν¨μ
λλ€ ν¨μ μ μΈκ³Ό νΈμΆ
fun ν€μλλ₯Ό μ΄μ©νμ§ μμΌλ©° ν¨μ μ΄λ¦μ΄ μμ. -> μ£Όλ‘ λλ€ ν¨μλ₯Ό λ³μμ λμ ν΄ μ¬μ©
{ 맀κ°λ³μ -> ν¨μ λ³Έλ¬Έ }
* λλ€ ν¨μ μ¬μ© κ·μΉ
- μ€κ΄νΈ { } λ‘ νν
- { } μμ νμ΄ν(->)κ° μμΌλ©° νμ΄ν μΌμͺ½μ 맀κ°λ³μ, μ€λ₯Έμͺ½μ ν¨μ λ³Έλ¬Έ
- ν¨μμ λ°νκ°μ ν¨μ λ³Έλ¬Έμ λ§μ§λ§ ννμ
// λλ€ ν¨μλ₯Ό λ³μμ λμ
val sum = {no1: Int, no2: Int -> no1 + no2}
sum(10, 20) // λλ€ ν¨μ νΈμΆλ¬Έ
// λλ€ ν¨μ μ μΈκ³Ό νΈμΆ
{no1: Int, no2: Int -> no1 + no2} (10, 20)
맀κ°λ³μκ° μλ λλ€ ν¨μ
- 맀κ°λ³μκ° μμ κ²½μ° νμ΄ν μΌμͺ½μ λΉμλ¬λ λλ€. (νμ΄νκΉμ§ μλ΅ κ°λ₯)
// 맀κ°λ³μκ° μλ λλ€ ν¨μ
{-> println("function call")}
// νμ΄νλ₯Ό μλ΅ν λλ€ ν¨μ
{println("function call")}
맀κ°λ³μκ° 1κ°μΈ λλ€ ν¨μ
- 맀κ°λ³μλ₯Ό μ μΈνμ§ μμλ ν¨μλ‘ μ λ¬λ κ°μ μ½κ² μ΄μ©ν μ μλ€.
- μ€κ΄νΈ μμ 맀κ°λ³μ μ μΈμ μλ΅νκ³ it ν€μλλ‘ λ§€κ°λ³μλ₯Ό μ΄μ©ν μ μλ€.
* it ν€μλ : ν΄λΉ 맀κ°λ³μμ νμ μ μλ³ν μ μμ λλ§ κ°λ₯
// 맀κ°λ³μκ° 1κ°μΈ ν¨μμ it ν€μλ μ¬μ©
fun main(){
// val some = {no: Int -> println(no)}
val some: (Int) -> Unit = {println(it)} // ν¨μ νμ
: (Int) -> Unit
some(10)
}
λλ€ ν¨μμ λ°ν
- returnλ¬Έ λμ λ³Έλ¬Έμμ λ§μ§λ§ μ€μ μ€ν κ²°κ³Όλ₯Ό λ°ν
ν¨μ νμ κ³Ό κ³ μ°¨ ν¨μ
μ½νλ¦°μμλ ν¨μλ₯Ό λ³μμ λμ νμ¬ μ¬μ©ν μ μλ€. κ·Έλ¬λ λ³μλ νμ μ κ°μ§λ©°, νμ μ μ μΆν μ μμ λλ₯Ό μ μΈνκ³ λ μλ΅ν μ μλ€. κ·Έλμ λ³μμ ν¨μλ₯Ό λμ νλ €λ©΄ λ³μλ₯Ό ν¨μ νμ μΌλ‘ μ μΈν΄μΌ νλ€.
ν¨μ νμ
ν¨μλ₯Ό μ μΈν λ λνλλ 맀κ°λ³μμ λ°ν νμ
// format : ν¨μ νμ
= ν¨μ λ΄μ©
val some: (Int, Int) -> Int = { no1: Int, no2: Int -> no1 + no2 }
νμ λ³μΉ - typealias
νμ μ λ³μΉμ μ μΈνλ ν€μλλ‘, ν¨μ νμ λΏλ§ μλλΌ λ°μ΄ν° νμ μ μ μΈν λλ μ¬μ©
typealias MyFunType = (Int, Int) -> Boolean
fun main() {
val someFun: MyFunType = { no1: Int, no2: Int -> no1>no2 }
}
맀κ°λ³μ νμ μλ΅
맀κ°λ³μμ νμ μ μ μΆν μ μλ€λ©΄ νμ μ μΈ μλ΅ κ°λ₯
κ³ μ°¨ ν¨μ
ν¨μλ₯Ό 맀κ°λ³μλ‘ μ λ¬λ°κ±°λ λ°ννλ ν¨μ
λ μμ μ±
null : κ°μ²΄κ° μ μΈλμμ§λ§ μ΄κΈ°νλμ§ μμ μν, κ°μ²΄κ° μ£Όμλ₯Ό κ°μ§μ§ λͺ»ν μν
λ νμ© - ? μ°μ°μ
λ³μ νμ λ€μ ? μ°μ°μλ₯Ό μΆκ°νλ©΄ λ νμ© λ³μλ‘ μ¬μ©ν μ μλ€
var data1: String="kang"
data1 = null // μ€λ₯
var data2: String?="kang"
data2 = null // μ±κ³΅
λ μμ μ± νΈμΆ - ?. μ°μ°μ
λ νμ©μΌλ‘ μ μΈν λ³μμ λ©€λ²μ μ κ·Όν λλ λ°λμ ?. μ°μ°μλ₯Ό μ΄μ©ν΄μΌ νλ€.
?. μ°μ°μ : λ³μκ° nullμ΄ μλλ©΄ λ©€λ²μ μ κ·Όνμ§λ§ nullμ΄λ©΄ λ©€λ²μ μ κ·Όνμ§ μκ³ nullμ λ°ν
var data: String? = "kang" // λ νμ© λ³μ
var length = data?.length // μ±κ³΅
μλΉμ€ - ?: μ°μ°μ
λ³μκ° λμ΄λ©΄ λμ λ°ν(λ³μκ° λμΌ λ λμ ν΄μΌ νλ κ°μ΄λ μ€νν΄μΌ νλ κ΅¬λ¬Έμ΄ μμ λ)
data = null
println("data = $data : ${data?.length ?: -1}") // null
μμΈ λ°μ - !! μ°μ°μ
κ°μ²΄κ° λμΌ λ μμΈλ₯Ό μΌμΌν€λ μ°μ°μ
fun some(data: String?): Int {
return data!!.length
}
fun main() {
println(some("kang")) // 5
println(some(null)) // Exception in thread "main" java.lang.NullPointerException
}
'Android' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Chap 6] λ·°λ₯Ό μ΄μ©ν νλ©΄ κ΅¬μ± (0) | 2021.11.30 |
---|---|
[Chap 4] μ½νλ¦° κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° (0) | 2021.11.20 |
[Chap 3] μ½νλ¦° μμνκΈ° (0) | 2021.11.19 |
[Chap 2] μλλ‘μ΄λ μ±μ κΈ°λ³Έ ꡬ쑰 (0) | 2021.11.17 |
[Chap 1] μλλ‘μ΄λ μ€νλμ€ μ€μΉ κ³Όμ μμ μ£Όμ μ£Όμ (0) | 2021.11.09 |
λκΈ