Lambdas
-> java
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick (View view) {
view.setAlpha(0.5f);
}
});
-> kotlin
button.setOnClickListener {
view -> view.alpha = 0.5f
}
-> view 생략가능 파라미터가 한개인 경우
button.setOnClickListener {
it.alpha = 0.5f
}
it : implicit name of a single parameter
Lambdas Closures
-> java
int count = 0;
Button button = findViewById(R.id.button);
button.setOnClickListener ( new View.OnClickListener() {
@Override
public void onClick(View view) {
count++; // count 접근 못함. error 뜸
}
});
// 다음과 같이 해결한다.
final int[] count = {0};
Button button = findViewById(R.id.button);
button.setOnClickListener ( new View.OnClickListener() {
@Override
public void onClick(View view) {
count[0]++; // count 접근 못함. error 뜸
}
});
-> kotlin
var count = 0
button.setOnClickListener {
count++
}
var sum = 0
ints.filter {it > 0}.forEach {
sum += it
}
print(sum)
Lambdas return
button.setOnTouchListener { view, motionEvent ->
// 마지막 줄이 return에 해당한다.
true
}
stream
-> java
for (Integer integer : list) {
if (integer > 5) {
integer *= 2;
Log.e("TAG", "Index " + integer);
}
}
-> kotlin
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 { Log.d("TAG", "index ${it * 2}") }
stream - map
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}")
}
val map = mutableMapOf ( 1 to "value", 2 to "value", 3 to "value")
map.forEach { _, value ->
println("value $value")
}
forEach {key, value ->} 는 minSdk 21 이상에서 사용 가능함
'# 02 > 코틀린' 카테고리의 다른 글
[Kotlin] Null 처리 방법 (0) | 2019.07.11 |
---|---|
[Kotlin] return and jumps and This-expressions (0) | 2019.07.11 |
[Kotlin] Control Flow - if/when/loops (0) | 2019.07.11 |
[Kotlin] Function (0) | 2019.07.11 |
[Kotlin] Class (0) | 2019.07.11 |