티스토리 뷰
간단하게 추상 메소드 한개를 가진 인터페이스를 뜻한다.
- Single Abstract Method
- lamda 식을 제공
- interface/ abstract 이어야 하고, 1개의 abstract method를 가지고 있어야 함
- setter 가 정의되어 있어야 함
주의사항
JAVA에서 만들어진 interface/ abstract 클래스는 kotlin에서 람다식으로 사용할 수 없다.
interface MyOnClickListener {
void onClick()
}
public void setOnMyOnClickListener (MyOnClickListener listener) {
this.onClickListener = listener;
}
<JAVA>
tv.setOnMyOnClickListener {
}
<KOTLIN>
tv.setOnMyOnClickListener (object: MyOnClickListener {
@override
fun onClick() {
// code
}
}
위에서 kotlin의 경우 Anomymous Class (익명 클래스) 를 사용해야 한다.
그러면 kotlin에서 lamda식을 활용하려면? => Higer Order Function 을 사용해야 한다.
(참고로, Higer Order Function 이란 고차원 함수로 함수를 변수처럼 사용하는 것을 말한다.
val myFun : () -> Unit 같은 형태를 많이 보셨죠?)
var onMyClickListener: (() -> Unit)? = null
tv.setOnMyClickListener {
}
※ 좋은 팁!
위의 kotlin 예시의 onMyClickListener를 실행하려면 어떻게 해야할까?
=> invoke() 함수를 활용하면 된다.
onMyClickListener?.invoke()
📗 <용어 정리>
- Higher-order function (고차함수) : 함수를 인자로 받거나, 함수를 반환하는 함수 를 의미한다.
- Lambda 식 : 람다식 (Lambda Expression) 은 익명 함수를 의미하며, 이름 없이 정의된 함수로, 간결하게 작성된 일급 함수 표협 입니다. 주로 함수를 값처럼 전달하건 저장할 때 사용됩니다.
- first-class function (일급 함수) : 함수를 값처럼 취급할 수 있어, 변수에 저장하거나 인자로 전달하고 반환할 수 있는 함수를 말합니다.
위의 정의들이 헷갈릴 수 있다. 뭔가 서로 비슷한 말이고 포함된 느낌이 든다면!
-> 람다식은 고차함수를 사용하는 주요 수단 중 하나라고 볼 수 있다.
-> 고차 함수는 일급 함수의 특성을 활용하여 함수를 인자로 받거나 반환하는 특정 유형의 함수이다.
'kotlin' 카테고리의 다른 글
Reified란? (Type Eraser) (0) | 2020.09.07 |
---|---|
Kotlin - filter, map 은 알겠는데, Sqeuence 란? (0) | 2020.05.25 |
Generic (0) | 2019.10.15 |
Kotlin - Nested / Inner class (0) | 2019.08.25 |
Kotlin 자세히 알아보기 -Higer-Order Function (0) | 2019.08.18 |
- Total
- Today
- Yesterday
- flutter fcm push message background foreground killed
- SpinnerAdapter
- MVP
- Kotlin
- changenotifier
- Spinner
- rxjava
- multi api
- provider
- Flutter
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |