Callback

BongKu·2023년 6월 21일
0

Android

목록 보기
8/30
post-thumbnail

Callback ?

callback 이란 함수의 파라미터로 들어오는 함수로, 주로 비동기 작업의 결과를 처리하거나 비동기작업에 끝난 후 이벤트를 처리하는데 사용됩니다.

일반적으로 인터페이스, 함수, 람다식 으로 표현될 수 있습니다.

사용 방법

1. 비동기 작업 결과 처리

fun performAsyncTask(callback: (result: Int) -> Unit) {
    // 비동기 작업 수행
    val result = 42
    // 작업이 완료되면 callback 호출하여 결과 전달
    callback(result)
}

// 사용 예시
performAsyncTask { result ->
    // 비동기 작업이 완료되면 실행될 코드
    println("Result: $result")
}

2. 이벤트 처리

interface ButtonClickListener {
    fun onClick()
}

class Button {
    private var clickListener: ButtonClickListener? = null

    fun setOnClickListener(listener: ButtonClickListener) {
        clickListener = listener
    }

    fun simulateClick() {
        // 버튼 클릭 시 이벤트 발생
        clickListener?.onClick()
    }
}

// 사용 예시
val button = Button()
button.setOnClickListener(object : ButtonClickListener {
    override fun onClick() {
        println("Button clicked!")
    }
})

// 버튼 클릭 시 이벤트 처리
button.simulateClick()

3. 함수 타입 표현

typealias CalculationCallback = (result: Int) -> Unit

fun performCalculation(callback: CalculationCallback) {
    val result = 10 + 20
    callback(result)
}

// 사용 예시
val callback: CalculationCallback = { result ->
    println("Calculation result: $result")
}

performCalculation(callback)

4. 인터페이스 표현

interface TaskCompleteListener {
    fun onComplete(result: String)
}

class TaskExecutor {
    fun executeTask(listener: TaskCompleteListener) {
        // 작업 실행
        val result = "Task completed"
        listener.onComplete(result)
    }
}

// 사용 예시
val taskExecutor = TaskExecutor()
val listener = object : TaskCompleteListener {
    override fun onComplete(result: String) {
        println("Task result: $result")
    }
}

taskExecutor.executeTask(listener)

5. 람다식 표현

fun performOperation(callback: (value: Int) -> Int) {
    val result = callback(5)
    println("Operation result: $result")
}

// 사용 예시
performOperation { value ->
    value * 2
}
profile
화이팅

0개의 댓글