람다함수
는 익명함수
정의 기법이다람다함수는 주로 함수를 간단하게 정의 할때 이용하고 람다식이라고도 한다.
코틀린에서 람다함수를 많이 쓰는데 그 이유는 코틀린에서 고차함수를 지원하기 때문이다.
일반적으로 우리가 함수를 만들 때 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")}
이렇게 두가지 방식으로 써도 되다.