안드로이드 개발자의 창고
[18일차 Kotlin] 함수형 프로그래밍 본문
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT
📖 함수형 프로그래밍
-
Kotlin은 함수 사용을 보다 편리하게 할 수 있도록 다양한 개념들이 제공된다.
- 매개 변수로 받은 값을 연산하여 반환하는 함수를 만들 때 한 줄로 생략해서 만들 수 있다.
- 만약 수식을 계산하는 함수의 코드를 특정 부분에서만 사용한다면 람다로 만들어 사용할 수 있다.
📖 예제 코드
매개변수로 들어오는 값을 계산하여 반환하는 함수
fun testFun1(a1:Int, a2:Int) : Int{
return a1 + a2
}
fun testFun2(a1:Int, a2:Int) :Int = a1 + a2
fun testFun3(a1:Int, a2:Int) = a1 + a2
✔️ 코드 해석
- testFun2와 testFun3은 testFun1을 생략한 함수이며 기능은 a1 + a2로 동일하다.
- testFun2 : 마지막에 작성한 수식의 결과가 함수의 반환 값이 된다.
- testFun3 : 마지막에 작성한 수식에서 사용한 변수의 타입을 통해 계산된 결과의 타입을 알 수 있으므로 반환 타입 생략이 가능하다.
람다 함수
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}
✔️ 코드 해석
- 람다식을 작성하여 변수에 담아두면 그 것을 이용해 람다식을 계산하고 그 결과를 받아 사용할 수 있다.
- lambda1, lambda2, lambda3은 같은 기능인 a1 + a2를 수행하는 함수이다.
- lambda2 : lambda1에서 앞 부분 타입을 생략한 람다 함수이다.
- lambda3 : lambda1에서 { } 안의 타입을 생략한 람다 함수이다.
코드가 여러 줄인 함수
fun testFun4(a1:Int, a2:Int) : Int{
val r1 = a1 + a2
var r2 = a1 - a2
return r1 * r2
}
val lambda4 = {a1:Int, a2:Int ->
val r1 = a1 + a2
var r2 = a1 - a2
r1 * r2
}
✔️ 코드 해석
- lambda4
- testFun4를 람다 함수로 변환한 결과이다.
- 앞 부분의 타입을 생략했다.
- 제일 마지막에 작성한 값이 반환 값이 된다.
'Computer > Kotlin' 카테고리의 다른 글
[18일차 Kotlin] 익명 함수 (0) | 2023.05.23 |
---|---|
[18일차 Kotlin] 인라인 함수(Inline Function) (0) | 2023.05.23 |
[18일차 Kotlin] 연산자 오버로딩(Operator Overloading) (0) | 2023.05.23 |
[18일차 Kotlin] Scope Function(범위 지정 함수 - let, apply, run, with, also) (0) | 2023.05.23 |
[18일차 Kotlin] 고차 함수 (0) | 2023.05.23 |