투케이2K

76. (kotlin/코틀린) 고차 함수 (lambda) 사용해 콜백 (callback) 함수 구현 실시 본문

Kotlin

76. (kotlin/코틀린) 고차 함수 (lambda) 사용해 콜백 (callback) 함수 구현 실시

투케이2K 2022. 9. 27. 12:51

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

    // TODO [테스트 메소드 정의 실시]
    fun testMain(){
        Log.i("---","---")
        Log.d("//===========//","================================================")
        Log.i("","\n"+"[Test_Kotlin > testMain() 메소드 : 테스트 함수 동작 실시]")
        Log.d("//===========//","================================================")
        Log.i("---","---")


        /**
         * ------------------------------------
         * TODO [요약 설명]
         * ------------------------------------
         * 1. 콜백(callback) : 다른 코드의 인수로서 넘겨주는 실행 가능한 코드입니다
         * ------------------------------------
         * 2. 코틀린에서 콜백은 고차 함수 (lambda) 로 구현할 수 있습니다
         * ------------------------------------
         * 3. Unit 은 자바의 void 개념으로 반환 값이 없음을 나타냅니다
         * ------------------------------------
         * */


        // [로직 처리 실시]
        try{

            // ------------------------------------

            // TODO [초기 변수 선언 실시]
            val number = 2


            // TODO [콜백 함수 호출 실시]
            checkNumberEven(number){ result, message ->
                // [로그 출력]
                Log.i("---","---")
                Log.w("//===========//","================================================")
                Log.i("","\n"+"[Test_Kotlin > testMain() 메소드 : 콜백 호출 결과 확인]")
                Log.i("","\n"+"[result : "+ result +"]")
                Log.i("","\n"+"[message : "+ message +"]")
                Log.w("//===========//","================================================")
                Log.i("---","---")
            }

            // ------------------------------------
        }
        catch(e : Exception){
            Log.i("---","---")
            Log.e("//===========//","================================================")
            Log.i("","\n"+"[Test_Kotlin > testMain() 메소드 : 에러 상황 발생]")
            Log.i("","\n"+"[error : "+e.message+"]")
            Log.e("//===========//","================================================")
            Log.i("---","---")
        }
    }





    // TODO [코틀린 콜백 함수 생성 실시]
    fun checkNumberEven (num: Int, myCallBack: (result:Boolean?, message:String?) -> Unit){

        // [로직 처리 실시]
        if (num % 2 == 0){ // [짝수인 경우]
            myCallBack.invoke(true, "number is even")
        }
        else {
            myCallBack.invoke(false, "number is odd")
        }
    }
 

[결과 출력]

 

 

반응형
Comments