출처 : Tekhit Android App School / Soft campus 윤재성 강사님
🎉Lambda Function
- 전달 받은 값을 처리 후 결과를 반환 합니다.
- 가장 마지막에 작성한 수식의 결과를 반환 합니다.
- (Int, Int) : 매개 변수의 타입을 정의합니다.
val lambda1 : (Int, Int) -> Int = {a1:Int, a2:Int -> a1 + a2}
- 코틀린은 람다식만 작성이 가능합니다.
val lambda2 = {a1:Int, a2:Int -> a1 + a2}
- 타입 생략이 가능합니다.
val lambda3 : (Int, Int) -> Int = {a1, a2 -> a1 + a2}
- 코드가 엄청나게 줄어든당께요 ????
fun testFun3(a1:Int, a2:Int) : Int{
val r1 = a1 + 100
val r2 = a2 + 200
val r3 = r1 + r2
return r3
}
val lambda4 = {a1:Int, a2:Int ->
val r1 = a1 + 100
val r2 = a2 + 200
r1 + r2
}
🎉 AnnoymousFunction
- 함수의 이름을 지정하지 않고 변수에 담을 수 있습니다.
fun main(){
testFunction3()
}
// 익명함수
val testFunction3 = fun(){
println("익명함수입니다")
}
🎉Inline Function
- Java 파일로 변경될 때 함수를 호출하는 코드가 함수 내부의 코드로 변경됩니다.
- 자주 사용하는 함수를 inline 함수로 만들어주면 Java 코드로 변경될 때 코드의 양이 매우 많이 늘어나는
단점을 가지고 있지만 함수를 호출해 코드의 흐름이 이동하는 작업을 하지 않기 때문에 수행속도가 좋아집니다.
inline fun testFunction2(){
println("----------------")
println("testFunction1")
println("----------------")
}
🎉 Extension Function
- 클래스 이름.함수이름의 형태를 가집니다.
- 확장 함수 안에서 this를 통해 객체 자체에 접근할 수 있습니다.
fun main(){
val str1 = "abcd"
str1.printString()
}
fun String.printString(){
println("관리하는 문자열은 :${this} 입니다")
}
🎉 Infix Function
- 함수의 호출을 연산자 사용하듯이 할 수 있는 함수
fun main(){
val r1 = 100 add2 200
println("r1 : $r1")
val r2 = 10 isMultiple 2
println("r2 : $r2")
}
infix fun Int.add2(a1:Int) : Int {
return this + a1
}
infix fun Int.isMultiple(a1:Int) : Boolean{
val r1 = this % a1 == 0
return r1
}
🎉 Higher Order Function
- 매개 변수로 함수를 받거나 함수를 반환하는 함수
- 고차 함수에 전달하는 함수는 익명 함수를 사용합니다.
fun main(){
val t1 = fun(x1: Int, x2: Int): Int{
return x1 + x2
}
testFunc1(100, 200, t1)
}
fun testFunc1(a1:Int, a2:Int, m1:(Int, Int) -> Int){
val r1 = m1(a1, a2)
println("testFunc r1 : $r1")
}
- 함수를 반환하는 함수입니다.
- 반환되는 함수 안에서 함수를 반환하는 함수의 변수나 매개변수를 사용하는 것이 가능합니다.
fun testFunc2(a1:Int) : (Int, Int) -> Int {
return fun(x1:Int, x2:Int):Int {
return x1 + x2 + a1
}
}
- 람다식을 받는 것도 가능합니다.
fun testFunc3(a1:Int) : (Int, Int) -> Int {
return {x1:Int, x2:Int -> x1 + x2 + a1}
}
- 함수나 람다식을 받는 매개변수만 있는 함수입니다.
fun testFunc4(m1: (Int, Int) -> Int) {
val r1 = m1(100, 200)
println(r1)
}
- 매개 변수를 하나만 가지고 있는 함수라 람다를 받는 함수
fun testFunc5(m1:(Int) -> Int){
m1(100)
}
'TEKHIT ANDROID SCHOOL' 카테고리의 다른 글
[TECKHIT] Material3 Button (1) | 2024.01.21 |
---|---|
[TEKHIT] KOTLIN 범위 지정 함수와 배열 (0) | 2024.01.12 |
[TEKHIT] Enum & SealedClass & Reflection (0) | 2024.01.11 |
[TEKHIT] 중첩 클래스 & NULL & Casting (0) | 2024.01.10 |
[TEKHIT]Companion & Data Class & Generic (1) | 2024.01.10 |