람다식이란?
람다식이란, 이름이 없는 함수를 간결하게 표현하는 방식이다.
기본 구조
변수명: 입력 타입 -> 반환 타입 = {매개변수 -> 함수본문}
적당한 예시로 더하는 일반적인 함수를 람다식으로 변경해보자.
//[일반적인 함수]
fun myPureFunc(a: Int, b: Int): Int{
return a+b
}
//[람다식]
val myLambda:(Int, Int) -> Int = {a: Int, b: Int -> a+b}
// 타입 생략 가능
val myLambda:(Int, Int) -> Int = {a, b -> a+b}
이렇게 일반적인 함수를 간단하게 함수이름 없이 람다식으로 간단하게 표현할 수 있다.
람다식의 호출
람다식을 직접 활용해서 호출하는 방법
fun main() {
val myLambda:(Int, Int) -> Int = {a, b -> a+b}
print(myLambda(1, 2)) //3
}
람다식에서 바로 호출하는 방법
fun main() {
val myLambda = { a: Int, b: Int -> a + b }(1, 2)
print(myLambda) //3
}
람다식에서 바로 인자를 전달해서 그 값을 변수에 할당할 수 있다.
람다식과 고차함수
우리는 위에서 간단하게 함수를 생성하고 변수에 할당하는 방법을 알아봤다.
이걸 고차함수에 사용한다면 엄청 간단해진다. 왜냐하면 고차함수는 함수를 인자를 받는데 그러면 인자로 전달할 함수도 선언해야한다. 하지만 람다식을 이용해서 간단하게 함수를 선언하고 바로 고차함수에 인자로 전달 하면 간단해지기 때문이다.
fun add(a: Int, b: Int, func:(Int, Int) -> Int): Int {
return (func(a, b))
}
fun main() {
val myLambda:(Int, Int) -> Int = {a, b -> a+b}
var result = add(2, 3, myLambda)
println(result) //5
}
'2학년 2학기 > 모바일 소프트웨어 - 코틀린' 카테고리의 다른 글
확장함수(Extension Funtions) (1) | 2024.10.11 |
---|---|
람다식(2) - it, _ 사용 (0) | 2024.10.10 |
고차함수(2) - 응용편 (0) | 2024.10.10 |
고차함수(1) - 선언과 사용 (0) | 2024.10.10 |
Kotiln - 함수 (0) | 2024.10.10 |