Archives
Recent Posts
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[18일차 Kotlin] 함수형 프로그래밍 본문

Computer/Kotlin

[18일차 Kotlin] 함수형 프로그래밍

Wise-99 2023. 5. 23. 02:40

 

 

출처 : 안드로이드 앱스쿨 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를 람다 함수로 변환한 결과이다.
    • 앞 부분의 타입을 생략했다.
    • 제일 마지막에 작성한 값이 반환 값이 된다.