[Kotlin] 고차 함수와 람다 함수

2022. 12. 20. 12:00·컴퓨터 언어/Kotlin
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
'컴퓨터 언어/Kotlin' 카테고리의 다른 글
  • [Kotlin] 데이터 클래스(data class)의 장점
  • [Kotlin] 영역 함수 (run, let, with, apply, also)
  • [Kotlin] 클래스 사용법
  • [Kotlin] try-catch문을 활용한 예외 처리 (finally)
웅대
웅대
알고리즘과 백엔드를 중심으로 열심히 공부 중입니다! 같이 소통하며 공부해요!
    250x250
  • 웅대
    웅대 개발 블로그
    웅대
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 백준 알고리즘
        • dp
        • 문자열
        • 정렬
        • 스택
        • 브루트 포스
        • 이진 탐색
        • 정리
        • 우선순위 큐
        • 자료구조
        • 그래프
        • 기타
        • 그리디
      • 컴퓨터 언어
        • Kotlin
        • Python
        • C#
      • 공부
        • Database
        • Android Studio
        • Algorithm
        • 컴퓨터 구조론
        • Spring
        • lombok
        • AWS
        • Network
        • OS
        • Git & GitHub
        • AI
        • Computer Vision
        • 보안
        • Nginx
        • 프론트
        • express
        • GCP
        • grokking concurrency
        • DevOps
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    influxDB CLI
    스프링 OAuth2
    Merge
    Vector Store
    스택
    parametric search
    bfs
    openvidu 배포
    푸쉬 알람
    ci/cd
    code tree
    RNN
    다익스트라
    AWS Lambda
    nn.RNN
    embedding
    파이썬
    ChatPromptTemplate
    binary search
    codetree
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
웅대
[Kotlin] 고차 함수와 람다 함수
상단으로

티스토리툴바