Higher-Order Functions
는 고계(고차)함수로 변역됩니다.
함수의 인자로 함수를 넘기거나, 함수를 리턴하는 함수를 말합니다.
고차함수를 이해하려면 먼저 일급함수(First class functions)를 알아야 합니다.
일급함수를 지원한다는 의미는 고차함수를 사용할 수 있다는 의미입니다.
고차함수
아래 코드는 고차함수의 특징을 보여줍니다.
returnParamFunc
는 함수를 인자로 받고 함수를 결과로 리턴해줍니다.
val hello: () -> String = {"hello world"}
fun returnParamFunc(func: ()->String): () -> String {
return func
}
fun main(args: Array<String>) {
val returned = returnParamFunc(hello)
print("${returned()}")
}
위의 코드에서 main을 보시면 인자로 hello
함수를 넘겨주고 결과로 함수를 받습니다.
그리고 리턴받은 함수를 호출하여 hello world
를 출력하였습니다.
실행 결과
hello world
인자 및 리턴 타입
인자로 함수를 넘길 때 변수 이름 뒤에 : ()->String
처럼 함수의 타입을 명시해야 합니다.
Int를 인자로 받고 String을 리턴하는 함수는
(Int)->String
처럼 표현합니다. ->
의 왼쪽이 인자, ->
의 오른쪽이 리턴값을 의미합니다.
인자는 괄호로 묶어주어야 합니다.
fun returnParamFunc(func: ()->String): () -> String {
return func
}
만약 인자로 Int를 두개 넘긴다면 (Int, Int)->String
처럼 표현할 수 있습니다. 더 많은 인자를 넘기고 싶으시면 인자를 더 추가하시면 됩니다.
인자가 없다면 ()->String
처럼 괄호 안의 내용을 비우면 됩니다.
리턴값이 없다면 Unit을 사용하시면 됩니다. (Int, Int)->Unit
처럼 표현할 수 있습니다.
정리
고계함수의 의미에 대해서 알아보았고 간단한 코드로 어떻게 사용되는지 알아보았습니다.
참고
Loading script...
Related Posts
- Kotlin - 배열에서 최소 값, 최대 값 찾기
- Kotlin - 2차원 배열 선언, 초기화 방법
- Kotlin - 배열 선언, 초기화 방법
- Kotlin - 리스트, 배열 길이 가져오기
- Kotlin - 리스트에서 최대, 최소 값 찾기
- Kotlin - for 반복문, 배열/리스트 순회
- Kotlin - Timer, 주기적으로 함수 실행
- Kotlin - sleep, 쓰레드 몇 초 지연
- Kotlin - Thread 생성 및 실행
- Kotlin에서 정규표현식 사용하기
- Kotlin - 문자열 길이 계산
- Kotlin - 문자열 비교 방법(equals, ==, compareTo)
- Kotlin - 2개의 배열 하나로 합치기
- Kotlin - 2개의 List 하나로 합치기
- Kotlin - 디렉토리의 모든 파일 리스트 출력
- Kotlin - 리스트 정렬 방법 (sort, sortBy, sortWith)
- Kotlin - 문자열 뒤집기 (Reverse String)
- Kotlin - 랜덤 숫자 생성 (Random, SecureRandom)
- Kotlin - Range, 숫자 범위 표현
- Kotlin - 음수를 양수로 변환, math.abs()
- Kotlin - List를 Set로 변환
- Kotlin - Set를 List로 변환
- Kotlin - 문자열에서 숫자(int)만 추출하는 방법
- Kotlin - Map을 List로 변환하는 방법
- Kotlin - File, Directory가 존재하는지 확인
- Kotlin - List를 Map으로 변환
- Kotlin - List의 중복 요소 제거
- Kotlin - List를 Array로 변환
- Kotlin - 엘비스 연산자 (Elvis Operation)
- Kotlin - Array를 List로 변환
- Kotlin - String을 Float으로 변환
- Kotlin - String을 Double으로 변환
- Kotlin - String을 Int로 변환
- Kotlin - String을 Long으로 변환
- Kotlin - String Null 또는 Empty 체크