투케이2K

77. (kotlin/코틀린) operator invoke 사용해 함수 이름 지정 없이 간편 호출 수행 실시 본문

Kotlin

77. (kotlin/코틀린) operator invoke 사용해 함수 이름 지정 없이 간편 호출 수행 실시

투케이2K 2022. 9. 27. 13:10

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

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


        /**
         * ------------------------------------
         * TODO [요약 설명]
         * ------------------------------------
         * 1. invoke : 이름 없이 간편하게 호출될 수 있는 함수입니다
         * ------------------------------------
         * 2. operator : 이름을 부여한 함수임에도 불구하고 실행을 간편하게 overloading 할 수 있는 키워드입니다
         * ------------------------------------
         * 3. operator invoke 방식을 사용해 간편하게 함수 이름 없이 호출할 수 있습니다
         * ------------------------------------
         * */


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

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

            // TODO [클래스 객체 생성 실시]
            val user = User()


            // TODO [invoke 함수 호출 실시]
            var info = user("투케이2K", 29)


            // TODO [로그 결과 출력]
            Log.i("---","---")
            Log.w("//===========//","================================================")
            Log.i("","\n"+"[Test_Kotlin > testMain() 메소드 : 로그 결과 출력 실시]")
            Log.i("","\n"+"[info : "+ info +"]")
            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 [내부 클래스 생성]
    class User{

        // [operator invoke 정의 실시]
        operator fun invoke(name: String, age: Int) : String{
            return "이름 : " + name + " / " + "나이 : " + age.toString()
        }
    }
 

[결과 출력]


반응형
Comments