본문 바로가기
Kotlin

[코틀린 용어] higher order function, function literal, 고차함수, 함수 리터럴

by 붕어사랑 티스토리 2021. 12. 29.
반응형

1. 고차함수, Higher Order Function

 

 

코틀린의 람다표현식을 공부하다 보면 위 용어 higher-order function, 고차함수 라는 용어를 많이 보게된다.

 

이거의 뜻은 다음과 같다

 

1. 함수를 input으로 받는 함수

2. 혹은 함수자체를 리턴해주는 함수

 

 

그럼 왜 이놈이 람다표현식 얘기할때 자주나오는가?

 

주로 저 input값을 줄때나 return으로 함수를 해 줄때 람다표현식을 자주 사용하기 때문이다.

 

 

 

2. 함수 리터럴, function literal

 

람다표현식을 공부하다 보면 위 얘기도 많이 보게 된다.

 

먼저 리터럴에 대한 정의부터 보자

 

 

위키피디아에 설명은 아래와 같이 되어있다.

 

In computer science, a literal is a notation for representing a fixed value in source code

 

 

리터럴이란 한마디로 그냥 값이다 값

 

자 우리가 변수를 선언하고 값을 넣는다고 치자

 

int myVariable = 10;

 

여기서 myVariable은 변수다.

그리고 오른쪽에 있는 10은 리터럴이다.

 

그냥 이렇게 생각하면 편하다

우리가 변수선언할때 항상 보는 형태이다.

 

자료형 변수명 = 리터럴(값);

 

반응형

 

그럼 함수 리터럴이란?

 

코틀린 공식문서에서는 다음과 같이 설명되어 있다

 

Lambda expressions and anonymous functions are function literals. Function literals are functions that are not declared but are passed immediately as an expression. 

 

람다표현식과 익명함수는 함수리터럴이다.

함수리터럴은 객체로 선언이 안되어있지만 표현식을 통해 값으로 전달되는 함수이다.

 

 

간단히 예를 들면

 

 

val sum: (Int, Int) -> Int = { x: Int, y: Int -> x + y }

위 코드에서 함수 리터럴은 { x: Int, y: Int -> x + y } 요놈 자체가 되겠다.

 

 

 

 

 

혹시나 지금 당신이

 

함수 리터럴 with 리시버

 

with 리시버 리시버 리시버 리시버 리시버 리시버 리시버 리시버 리시버 리시버 리시버 

 

 

때문에 고통받고 있다면 아래 글을 참고하자

 

 

 

 

https://lucky516.tistory.com/134

 

[코틀린] 리시버가있는 함수 리터럴, Function literals with receiver

공식문서 설명에 진짜 뭐같이 나와있어서 이해하기 참 힘든 부분이다. 진짜 안드로이드 진영은 초등학생도 이해하기 쉽도록 설명할 노력은 하나도 없는 모습이 참 밉상이다. 이 망할 Function lite

lucky516.tistory.com

 

 

반응형

댓글