728x90
반응형
고차 함수란 함수를 인자로 받거나 함수로 반환하는 함수이다.
람다 함수의 다른 뜻은 익명 함수로 함수를 단순하게 표현할 수 있다.
불필요한 연산을 줄여 메모리를 아낄 수 있다는 장점이 있다.
이제 고차 함수의 인자로 람다 함수를 받는 방법을 공부해보려한다.
첫 번째와 두 번째 인자로 정수를 받고 세 번째 인자로 연산을 정의한 함수를 받으려고 한다.
세 번째 인자에 따라서 두 정수를 더하거나 빼거나 곱하는 함수를 만들어보려한다.
fun calculate(a:Int,b:Int,op:(Int,Int)->Int){
println(op(a,b))
}
세 번째 인자의 경우 정수 두 개를 받아서 정수를 반환하는 형태이다.
이제 이를 사용하기 위해서는 calculate 함수를 호출할 때 세 번째 인자로 람다 함수를 주면 된다.
calculate(5,4,{a,b->a+b}) //덧셈
calculate(5,4,{a,b->a-b}) //뺄셈
calculate(5,4,{a,b->a*b}) //곱셈
calculate(5,4,{a,b->a/b}) //나눗셈
위와 같이 람다 함수가 마지막 파라미터라면 밖으로 빼내는 것을 권장한다.
calculate(5,4){a,b->a+b} //덧셈
calculate(5,4){a,b->a-b} //뺄셈
calculate(5,4){a,b->a*b} //곱셈
calculate(5,4){a,b->a/b} //나눗셈
이제 배열의 요소들 중 특정 조건을 만족하는 요소의 개수를 출력하는 고차 함수도 만들어보겠다.
fun count(arr:IntArray,bool:(Int)->Boolean){
var count = 0
for(i in arr){
if(bool(i)) count++
}
println(count)
}
배열에서 짝수의 개수, 양수의 개수를 출력하고 싶다면 다음과 같이 람다 함수를 사용하면 된다.
val arr = intArrayOf(1,2,3,4,5,6,7,8,9,-1,-2,-3)
count(arr){it->it%2==0} //짝수의 개수 출력
count(arr){it->it>0} //양수의 개수 출력
728x90
반응형
'컴퓨터 언어 > Kotlin' 카테고리의 다른 글
[Kotlin] 데이터 클래스(data class)의 장점 (0) | 2022.12.22 |
---|---|
[Kotlin] 영역 함수 (run, let, with, apply, also) (0) | 2022.12.21 |
[Kotlin] 클래스 사용법 (0) | 2022.12.08 |
[Kotlin] try-catch문을 활용한 예외 처리 (finally) (0) | 2022.12.07 |
[Kotlin] 내포된 반복문과 레이블 (0) | 2022.12.06 |
댓글