반응형
Notice
Recent Posts
Recent Comments
Link
불로구
[코틀린 기초] 9. 함수형 프로그래밍(2) 본문
반응형
코틀린은 함수형 프로그래밍과 객체지향 프로그래밍을 모두 지원하는 다중 패러다임 언어이다.
함수형 프로그래밍
- 순수 함수를 작성하여 프로그램의 부작용을 줄이는 프로그래밍 기법
- 함수형 프로그래밍은 코드가 간략화되고 테스트나 재사용성이 더 좋아지면서 개발 생산성이 늘어난다.
- 람다식과 고차 함수를 사용
순수함수란?
- 부작용이 없는 함수를 말하며, 부작용이 없는 함수가 함수 회부의 어떤 상태도 바꾸지 않는 것
- 스레드에서 안전하고, 테스트를 수행하기 쉽다.
- 순수함수 예제
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을 통해 람다식 함수를 인자로 받을 수 있는 고차 함수가 된다.
함수형 프로그래밍의 정의와 특징
- 순수 함수 사용
- 람다식 사용가능
- 고차 함수 사용 가능
반응형
'프로그래밍 > 코틀린' 카테고리의 다른 글
[코틀린 기초] 11. 컬렉션 (List, Set, Map) (0) | 2021.03.01 |
---|---|
[코틀린 기초] 10. when 조건문 (0) | 2021.02.22 |
[코틀린 기초] 8. 함수형 프로그래밍 (0) | 2021.02.14 |
[코틀린 기초]6. 자료형 (2) (0) | 2021.02.14 |
[코틀린 기초] 5. 자료형 비교 & 변환 (0) | 2021.02.09 |
Comments