본문 바로가기

안드로이드/Kotlin

[Kotlin] 람다 표현식(lambda expression)

람다 표현식(lambda expression)

람다 표현식은 익명 함수를 지칭하는 용어이다. 람다 표현식을 통해 간결한 프로그래밍 코드 작성이 가능하다.

기본적으로 코틀린의 람다 표현식은 다음과 같은 형식이다.

//버튼의 리스너를 등록하는 람다 표현식
val button:Button = ...
button.setOnClickListener({
    v -> doSomething()
})

 

함수를 호출할 때 마지막 인자가 함수인 경우

다음은 안드로이드에서 Java를 통해 AlertDialog를 만드는 예시이다. 

AlertDialog.Builder alert = new AlertDialog.Builder(this)
			    ...
                            .setPositiveButton("확인", new OnClickListener() {
                            	@Override
                                public void onClick(DialogInterface dialog, int which){
                                }
                            })
                            .create()
                            

 

위를 코틀린의 람다를 사용할 경우 아래와 같이 사용가능하다. 함수의 마지막 인자가 함수인 경우 람다를 통해 표현할 수 있다.

val alert = new AlertDialog.Builder(this)
	    ...
           .setPositiveButton("확인") { dialog, which -> doSomething(which) }
           .setNegativeButton("취소") { dialog, which -> dontSomething(which) }
           .create()

 

만약, 람다 표현식 내의 매개변수 중 사용하지 않는 매개변수는 _를 통해 사용하지 않는 매개변수임을 명시할 수 있다.

val alert = new AlertDialog.Builder(this)
	    ...
           .setPositiveButton("확인") { _, which -> doSomething(which) }
           .setNegativeButton("취소") { _, which -> dontSomething(which) }
           .create()

 

만약, 람다 표현식 내에 매개변수가 하나만 존재할 경우 it을 통해 접근 가능하다.

val button:Button
button.setOnClickListener { doSomething(it) }