안녕ㅎㅎ 오늘은 Kotlin 기본 강의 세번 째 시간이다.
Kotiln 기본 강의에 대한 글을 마무리하고 나면, 유튜브로 강의 내용을 한번 올려볼까 생각하고 있다.
자 오늘은 Lambda라는 기능을 공부해볼 예정이다.
Lambda란?
Kotlin에서는 함수의 Parameter로 함수를 받아올 수 있다. 이때 이 Lambda라는 문법을 사용한다. 이렇게 Parameter 를 넘겨주면 함수내에서 Parameter로 넘어온 함수를 호출해서 사용할 수 있는 것이다.
아래와 같은 방식으로 사용하면 된다.
1
2
3
|
fun 함수명 ( 파라미터함수 : () -> 반환타입 ) {
// 파라미터함수() 활용
}
|
처음 보는 형태라 .. 어렵게 느껴지실 수 있지만 쓰다보면 편해지지 (?) 않을까 생각한다.
저렇게만 해놓으면 무슨말인지 모를 수가 있다. 예제를 보자.
1
2
3
4
5
6
7
8
9
10
11
2
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
fun main (args : Array<String>) {
lambdaFunction1 (
parameterFunction1 = { a: Int ->
println("파라미터함수의 파라미터로 들어온 값 : ${a}");
}
)
lambdaFunction2 (
parameterFunction2 = {
println("파라미터함수가 호출 됨");
}
)
lambdaFunction3 (
parameterFunction3 = { a:Int, b:Int->
"${a} + ${b} = ${a+b}"
"${a} - ${b} = ${a-b}"
"${a} x ${b} = ${a*b}"// 위에거는 무시하고 최종적으로 이값이 나옴.
}
)
}
// 1.파라미터함수에 파라미터 값이 있고 리턴 값은 없는 경우
fun lambdaFunction1 (parameterFunction1: (Int) -> Unit) {
parameterFunction1(1);
}
// 2.파라미터함수에 파라미터 값이 없고 리턴 값도 없는 경우
fun lambdaFunction2 (parameterFunction2 : () -> Unit) {
parameterFunction2();
}
// 3. 파라미터함수에 파라미터 값과 리턴값이 모두다 있는 경우
fun lambdaFunction3 (parameterFunction3 : (Int, Int) -> String) {
var result = parameterFunction3(5, 3);
println(result);
}
|
차근 차근 보자. lamdaFunction1, lamdaFunction2, lamdaFunction3 함수 구현부를 보면
각각 parameterFunction1, parameterFunction2, parameterFunction3 이 각 함수의 파라미터로 들어가 있고,
또 이 함수들을 보면 ( ) 안에는 파라미터가 -> 옆에는 리턴 값이 들어가 있는 것을 볼 수 있다.
그리고 이 함수를 호출하는 main 함수를 보면 { } 안에서 파라미터함수의 로직이 구현되어 있는 걸 볼 수 있다.
말이 좀 어렵나? 예제를 두세번 보다보면 이해가 될 것이다. ㅎㅎㅎ
lambda 의 장점?
람다를 공부하다보니... java에서 사용하던 익명 클래스랑 비슷한게 아닐까 생각이 들었다. 우리가 자바 8 이전에 사용하던 익명클래스의 예제를 한번 보자. ( 자바 8 이후부터는 자바에서도 람다식 표현을 제공한다.)
1
2
3
4
5
6
7
|
// java 의 익명 클래스로 리스너 구현하기.
btn.setOnClickListener(new onClickListener() {
@Override
public void onClick(View view) {
// 버튼 클릭시 동작할 기능 구현.
}
});
|
위의 코드를 Kotlin 의 lambda로 구현하면, 아래와 같다.
1
2
3
4
|
// kotlin 의 lambda 로 리스너 구현하기.
btn.setOnClickListener{
// 버튼 클릭시 동작할 기능 구현.
}
|
간결해졌다. 많은 장점이 있겠지만 ( 공부한지 진짜 얼마 안되서 잘모르겠다. 공부하다가 장점이 더 발견되면 포스팅해드릴것을 약속드린다.) 간결함 ! 이게 큰 장점이 아닐까 생각한다.
자 아무튼 오늘은 Lamda를 공부해보았다. Kotlin 왕이 될때까지 모두들 화이팅하자! 그럼 오늘도 열코~~
'Programming > Kotlin' 카테고리의 다른 글
[Kotlin] Kotlin 기본 강의 (5) - 분기문 (0) | 2019.11.03 |
---|---|
[Kotlin] Kotlin 기본 강의 (4) - 연산자 (2) | 2019.11.02 |
[Kotlin] Kotiln 기본 강의 (2) - 함수 (1) | 2019.10.26 |
[Kotlin] Kotlin 기본 강의 (1) - 자료형 & 변수 (0) | 2019.10.26 |
[Kotlin] Kotlin이 처음인 사람에게 드리는 선물 (2) (1) | 2019.10.26 |
댓글