Gidhub BE Developer

[Kotlin] 메서드 인자로 n개의 람다(Lambda)를 받는 경우 :: 예제 코드를 보고 출력 값을 맞춰보자.

2023-04-04
goodGid

Overview


Example Code

fun call(
    before: () -> Unit = {},
    middle: () -> Unit = {},
    after: () -> Unit = {}
) {
    before()
    println("- - -")
    middle()
    println("- - -")
    after()
}
  • call( )이라는 메서드가 있고

    인자로는 다양한 람다 메서드를 받는다.

fun main(args: Array<String>) {
  call({ println("CALL1") }, { println("CALL2") }) {
      println("CALL3")
  }
}
  • 여기서 call( ) 메서드를 호출하면 어떤 결과가 출력될까?

    센스가 있다면 쉽게 추론할 수 있다.

CALL1
- - -
CALL2
- - -
CALL3
  • 그렇다면 다음과 같이 호출을 하게 되면 어떤 결과가 출력될까?

    (이 부분이 이 글을 작성하게 된 이유이다.)

fun main(args: Array<String>) {
  call { print("CALL") }
}
  • 출력 결과는 다음과 같다.
- - -
- - -
CALL
  • 결과를 보면 알 수 있듯이

    call( ) 메서드를 호출하면서 따로 아규먼트를 지정해주지 않았고

    그 결과 가장 마지막 인자인 after에 print(“CALL”)가 매핑이 되었음을 알 수 있다.


Summary

  • 코틀린에서 람다 형식으로 메서드에 인자를 넘기면

    메서드에서 가장 마지막 람다 형식의 인자에 매핑이 된다.

  • 다른 사람의 코드를 보면서

    “이게 뭐지?” 라는 생각이 들지 않게

    코틀린을 잘 공부해 두자!


Reference


Recommend

Index