728x90
반응형
fun main() {
val list = listOf(9, 11, 23, 32)
list.joinToString(" "){"[$it]"}
}
주요 특징
- 람다에는 이름이 없다.
- 람다에는 함수 생성에 필요한 최소한의 코드만 필요하다.
- 다른 코드에 람다를 직접 삽입할 수 없다.
- 람다가 너무 복잡하면 이름 붙은 함수를 정의하는 편이 더 명확하다.
- 람다를 단 한 번만 쓰더라도 람다가 너무 크면...!? 이름 붙은 함수로 작성하는게 더 낫다.
사용 예시
fun main() {
val list = listOf(1, 2, 3, 4)
val result = list.map({ n -> "[$n]"})
}
- 그런데 파라미터가 하나인 경우, 코틀린은 자동으로 파라미터 이름을 it으로 만든다. 즉, 파라미터가 하나고 it으로 그 파라미터를 가르킨다면 n -> 조차 사용할 필요가 없다.
fun main() {
val list = listOf(1, 2, 3, 4)
val result = list.map({"[$it]"})
}
- 함수가 여러 파라미터를 받고 람다가 마지막 파라미터인 경우에는 람다를 인자 목록을 감싼 괄호 다음에 위치시키면 된다.
fun main() {
val list = listOf(9, 11, 23, 32)
list.joinToString(" "){"[$it]"}
}
- 람다를 이름 부튼 인자로 호출하고 싶을 땐 인자 목록을 감싸는 괄호 안에 람다를 위치시키면 된다.
fun main() {
val list = listOf(9, 11, 23, 32)
list.joinToString(searator = " ", transform = {"[$it]"})
}
- 파라미터가 둘 이상인 람다 구문의 예
fun main() {
val list = listOf('a', 'b', 'c')
list.mapIndexed { index, element -> "[$index: $element]"}
}
// 만약에 특정 인자를 사용하지 않는 경우 밑줄을 사용하면 된다.
fun main() {
val list = listOf('a', 'b', 'c')
list.mapIndexed { index, _ -> "[$index]" }
}
- 람다에 파라미터가 없을 수도 있다. 코틀린 스타일가이드에서는 이 경우 화살표를 남겨두지 말라고 권장한다.
- 람다를 var 나 val 에 담아 로직을 재사용 할 수 도 있다.
fun main() {
val list = listOf(1, 2, 3, 4)
val isEven = { e: Int -> e % 2 == 0 }
list.filter(isEven)
list.any(isEven)
}
728x90
반응형
'코틀린' 카테고리의 다른 글
코틀린 null 처리 방법 - Elvis 연산자 (0) | 2023.11.14 |
---|---|
아토믹 코틀린 - 컬렉션에 대한 연산 (0) | 2023.10.31 |
아토믹 코틀린 33 - when (0) | 2023.10.15 |
아토믹 코틀린 32 - 오버로딩 (0) | 2023.10.15 |
아토믹 코틀린 31 - 이름 붙은 인자와 디폴트 인자 (0) | 2023.10.15 |