람다 표현식(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) }
'안드로이드 > Kotlin' 카테고리의 다른 글
[Kotlin] 컬렉션(Collections) (3) | 2020.12.21 |
---|---|
[Kotlin] 위임(Delegation)과 초기화 지연(lazy initialization) (0) | 2020.12.20 |
[Kotlin] 널 안정성(Null safety) (0) | 2020.12.20 |
[Kotlin] Java와의 차이점 2 (0) | 2020.12.20 |
[Kotlin] 개요, Java와의 차이점 1 (0) | 2020.12.14 |