- Lambda Expression은 람다식, 람다 표현식이라고 합니다.
람다식는 단순하게보면 익명함수라고 볼 수 있습니다.
= 람다식을 값처럼 다룰 수 있다는 말은, 람다식 자체가 함수의 인수가 되거나 반환값이 될수 있다는 의미
익명함수익명 함수는 일반 함수와 비슷한 형식을 가지고 있으며, 단지 이름이 없을 뿐입니다.
- 익명 함수의 작성 방법
val 함수명 = fun(매개변수1: 타입, 매개변수2: 타입, ...) : 반환 타입 { // 함수의 내용 } //예시 val sum = fun(a: Int, b: Int) : Int { return a + b } fun main() { val sum = fun(a: Int, b: Int) : Int { return a + b } val result = sum(3, 5) println(result) // 8 }- 익명함수 장단점
- 장점
- 익명 함수는 코드의 재사용성을 높입니다. 특정 로직을 익명 함수로 작성하면,
해당 로직을 다른 곳에서도 필요할 때 재사용할 수 있습니다.- 코드의 가독성을 높여줍니다. 익명 함수를 사용하면 필요한 로직을 직접 구현할 수 있어서 코드의 의도를 명확하게 표현할 수 있습니다.
- 단점
- 익명 함수는 이름이 없기 때문에, 디버깅할 때
함수 이름이 표시되지 않아 어떤 함수가 어떤 역할을 하는지 파악하기 어렵습니다.
2.나중에 코드를 수정하거나 유지 보수해야 할 때,
익명 함수를 이해하기 어려울 수 있습니다.- 람다식과 익명 함수의 차이점
//람다식 예시 val sum: (Int, Int) -> Int = { a, b -> a + b } //익명함수 예시 val sum = fun(a: Int, b: Int) : Int { return a + b }
{ 매개변수 -> 함수 본문 }
val sum = { a: Int, b: Int -> a + b }
//추가 예시
val numbers = listOf(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter { it % 2 == 0 }
//예시에서는 listOf 함수에 람다 함수를 전달하여 짝수만을 필터링한
//evenNumbers 리스트를 생성하였습니다.
//it은 현재 요소를 나타내는 암묵적인 매개변수입니다.
간결한 코드: 람다 함수를 사용하면 별도의 함수 정의 없이도코드 가독성 향상: 람다 함수를 사용하면 코드의 의도를 명확하게 표현할 수 있습니다.높은 유연성: 람다 함수는 다른 함수의 매개변수로 전달될 수 있기 때문에,복잡한 로직을 표현하기 어려움: 너무 복잡한 로직을 표현하기 위해서는가독성 저하: 긴 람다 함수 표현식은 가독성을 저하시킬 수 있습니다.
- 딴블로그 보면서 정리하며...적긴했지만...이해ing...