불로구

[코틀린 기초] 9. 함수형 프로그래밍(2) 본문

프로그래밍/코틀린

[코틀린 기초] 9. 함수형 프로그래밍(2)

맹이맹이 2021. 2. 15. 08:06
반응형

코틀린은 함수형 프로그래밍과 객체지향 프로그래밍을 모두 지원하는 다중 패러다임 언어이다.

 

함수형 프로그래밍

- 순수 함수를 작성하여 프로그램의 부작용을 줄이는 프로그래밍 기법

- 함수형 프로그래밍은 코드가 간략화되고 테스트나 재사용성이 더 좋아지면서 개발 생산성이 늘어난다.

- 람다식과 고차 함수를 사용

 

순수함수란?

- 부작용이 없는 함수를 말하며, 부작용이 없는 함수가 함수 회부의 어떤 상태도 바꾸지 않는 것

- 스레드에서 안전하고, 테스트를 수행하기 쉽다.

- 순수함수 예제

fun sum(num1: Int, num2: Int):Int{
    return num1 + num2
}

- 일반함수 예제

fun check(){
    val test = User.grade() //check() 함수에 없는 외부 함수 사용
    if(test != null)    //변수 test가 User.grade()에 결과에 따라 달라짐
        process(test)
}

- 순수함수는 같은 인자에 대해 항상 같은값 반환, 함수 외부의 어떤 상태도 바꾸지 않는다는 조건이 있다.

 

람다식

- 람다 대수에서 유래

- { x, y -> x + y }

- 함수의 이름이 없고, 화살표(->)가 사용됨

 

 

일급 객체

- 함수의 인자로 전달가능하다.

- 함수의 반환값에 사용할 수 있다.

- 변수에 담을 수 있다.

- 즉, 람다식은 일급 객체의 특징을 가진 이름 없는 함수

 

고차함수

- 다른 함수를 인자로 사용하거나 함수를 결과값으로 반환하는 함수

fun main(){
    println(processSum({ x , y -> x + y }, 10, 20))
}

fun sum(num1: Int, num2: Int) = num1 + num2

fun processSum(sum: (Int, Int) -> Int, a:Int, b: Int): Int = sum(a,b)

- processSum() 함수는 sum이라는 매개변수가 있다.

- 이 sum은 람다식 함수 형식으로 선언되어있으며, processSum()은 sum을 통해 람다식 함수를 인자로 받을 수 있는 고차 함수가 된다.

 

함수형 프로그래밍의 정의와 특징

- 순수 함수 사용

- 람다식 사용가능

- 고차 함수 사용 가능

반응형
Comments