Notice
Recent Posts
Recent Comments
Link
반응형
변명은 만개 결과는 한개
[Kotlin] Lambdas 본문
728x90
반응형

Lambdas
코틀린에서는 기본적으로 람다를 제공하고있음.
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
view.setAlpha(0.5f);
}
});
위와같은 java 코드가 setOnClickListener 의 구현해야하는 메소드가 한가지(onClick()) 뿐이기에 아래와 같이 3줄로 줄어들 수 있음
button.setOnClickListener {
view -> view.alpha = 0.5f
}
또 한번 더, onClick() 메소드가 싱글 파라미터(한가지의 파라미터만을 가지는 메소드) 이기에 it 키워드를 사용하여 아래와 같이 생략 가능함
button.setOnClickListener {
it.alpha = 0.5f
}
Closure
Closure 란 내부의 컨텍스트에서 바깥에 있는 컨텍스트에 접근하는것. 코틀린은 closure 가 제공되기때문에 아래와 같이 사용하면 됨
var count = 0
button.setOnClickListener {
count++
}
// or
var sum = 0
ints.filter { it > 0 }.forEach {
sum += it
}
위 코틀린 코드를 디컴파일 시 기존 java 에서 외부 컨텍스트에 접근하듯 배열을 만들어 접근함.
return
button.setOnTouchListener { view, motion Event ->
// 함수 내 마지막 줄이 return에 해당한다
true
}
stream
filter, map 키워드로 구현
val list = mutableListOf(1, 2, 3, 4, 5)
list.filter { item -> item > 5 }.map { item -> Log.d("TAG", "index ${item * 2}") }
역시, 아래처럼 item 을 지우고 it으로 대체 가능
val list = mutableListOf(1, 2, 3, 4, 5)
list.filter { it > 5 }.map { item -> Log.d("TAG", "index ${it * 2}") }
map
forEach 로 손쉽게 접근
val map = mutableMapOf(1 to "value", 2 to "value", 3 to "value")
map.forEach { item ->
println("Key ${item.key} value ${item.value}")
}
아래처럼 item 을 지우고 it 대체 가능
val map = mutableMapOf(1 to "value", 2 to "value", 3 to "value")
map.forEach {
println("Key ${it.key} value ${it.value}")
}
forEach { key, value -> } sms minSdk 21 이상에서 사용 가능
728x90
반응형
'공부 > Kotlin' 카테고리의 다른 글
| [Kotlin] null (1) : null 처리방법 (0) | 2020.11.16 |
|---|---|
| [Kotlin] Return, Jumps, This Expression (0) | 2020.11.15 |
| [Kotlin] Control Flow (0) | 2020.11.13 |
| [Kotlin] Function (0) | 2020.11.12 |
| [Kotlin] class (0) | 2020.11.10 |