Kotlin의 확장 함수에 대해

최희창·2022년 6월 12일
0

Kotlin

목록 보기
6/13

Extension functions(확장 함수)

  • 기존에 정의된 클래스에 함수를 추가하는 기능이다.
  • 자신이 만든 클래스는 새로운 함수가 필요할 때 쉽게 추가할 수가 있지만, Standard Library 또는 다른 사람이 만든 라이브러리를 사용할 때 함수를 추가하기가 어렵습니다.
  • 이럴때 코틀린의 확장 함수를 사용할 수 있습니다.

확장 함수를 정의하는 방법

  • 형식 :
    fun 클래스이름.함수이름(인자 타입): 리턴타입 { 구현부 }
fun List<Int>.getHigherThan(num: Int): List<Int> {
    val result = arrayListOf<Int>()
    for (item in this) {
        if (item > num) {
            result.add(item)
        }
    }
    return result
}
  • Generic class의 확장 함수
    fun <'E'> 클래스이름<'E'>.함수이름(인자타입): 리턴타입 { 구현부 }
fun <T> MutableLiveData<T>.asLiveData() = this as LiveData<T>

fun <T> LiveData<T>.observeOnce(lifecycleOwner: LifecycleOwner, observer: Observer<T>) {
    observe(
        lifecycleOwner,
        object : Observer<T> {
            override fun onChanged(t: T?) {
                observer.onChanged(t)
                removeObserver(this)
            }
        }
    )
}

확장 함수를 사용하지 않고 상속과 Composition을 이용

profile
heec.choi

0개의 댓글