본문 바로가기
코틀린

아토믹 코틀린 - 람다

by 밝지 2023. 10. 30.
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
반응형