람다함수와 고차함수!

최윤정·2022년 5월 20일
0

Kotlin

목록 보기
2/5

람다함수

람다함수익명함수 정의 기법이다

람다함수는 주로 함수를 간단하게 정의 할때 이용하고 람다식이라고도 한다.
코틀린에서 람다함수를 많이 쓰는데 그 이유는 코틀린에서 고차함수를 지원하기 때문이다.

람다함수 선언과 호출

일반적으로 우리가 함수를 만들 때 fun 으로 만드는데 람다함수는 fun 키워드를 이용하지 않고, 함수의 이름이 없다.

  • 일반 함수 선언식
    fun 함수명 (매개변수){함수본문}
  • 람다 함수 선언식
    {매개변수 -> 함수본문 식}
    그런데 이렇게 쓰면 람다함수는 이름이 없으니까 람다함수를 호출 할 수 없게 된다. 따라서 우리는 보통 람다함수를 변수에 대입해서 사용한다.
val sum = {x:Int, y;Int -> x+y}

이런 식으로

람다함수를 사용하지 않는다면

fun sum(x:Int, y:Int):Int{
	return x+y 
}

이렇게 사용이된다.

그런데 우리가 람다함수를 만들자마자 사용을 하고싶을 수 있는 경우도 있겠지?
그렇다면 굳이 변수를 만들어야 될가?

{x:Int, y:Int -> x+y}(10,20)

함수는 어디선가 ()를 이용해서 호출을 해줘야 실행이 되기 때문에 소괄호를 이용해서 함수를 선언하자마자 호출한 것이다.


#### 람다함수 사용하는 규칙 - 람다함수는 {}로 표현한다 - {}안에 화살표 "->" 가 있으면 왼쪽이 매개변수 오른쪽이 함수본문 - 함수의 반환값은 함수 본문의 마지막 표현식이다.

매개변수

매개변수 없는 람다 함수

함수에 매번 매개변수가 있어야 되는 것은 아니다.
매개변수가 없을떄는

1. {->println("function call")}
2. {println("function call")}

이렇게 두가지 방식으로 써도 되다.

매개변수가 하나인 람다 함수


고차함수 참고 링크 [코틀린 고차 함수](https://taehyungk.github.io/posts/android-kotlin-high-order-function/) [Kotlin 고차함수와 람다를 예제를 통해 익히자!](https://velog.io/@jewelrykim/Kotlin-%EA%B3%A0%EC%B0%A8%ED%95%A8%EC%88%98%EC%99%80-%EB%9E%8C%EB%8B%A4%EB%A5%BC-%EC%98%88%EC%A0%9C%EB%A5%BC-%ED%86%B5%ED%95%B4-%EC%9D%B5%ED%9E%88%EC%9E%90)
profile
옴뇸뇸

0개의 댓글