ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 9-3. 제네릭스 : 타입 별명(Type Alias)
    Study(종료)/Kotlin 22.09.13 ~ 12.18 2022. 11. 13. 15:34

    9장

    9-1. 제네릭스 : 타입 파라미터

    9-2. 제네릭스 : 변성

    9-3. 제네릭스 : 타입 별명(Type Alias)


    9-3. 제네릭스 : 타입 별명(Type Alias)

     

    제네릭과 직접적인 연관은 없지만, 복잡한 제네릭 타입을 다룰 때 도움이 될 수 있는

    타입 별명 (type alias)라는 언어 기능에 대해 작성해보겠다.

    코틀린에서 타입 별명을 도입한 이유는 기존 타입의 이름을 대신할 수 있는

    새 이름을 도입할 수 있게 하기 위해서라고 한다.

    주 목적은 제네릭 타입이나 함수 타입처럼 긴 이름을 짧게 부를 수 있도록 해주는 것 이다.

     

    타입 별명 정의는 typealias 키워드로 이뤄지며, 그 다음 별명이 오고 = 기호 다음 실제 타입이 온다

    typealias IntPredicate = (Int) -> Boolean
    typealias IntMap = HashMap<Int, Int>

    이제 이렇게 정의한 이름을 = 오른쪽에 있는 타입 대신 쓸 수 있다.

    val map = IntMap().also {
        it[1] = 2
        it[2] = 3
    }

    타입 별명이 새 타입을 도입(introduce)하는것은 아니고, 

    기존 타입을 가리키는 새로운 방법을 추가하는 것 뿐이다.

    즉 타입 별명과 원래의 타입을 자유롭게 바꿔서 쓸 수 있다.


    개인적으로 9장에서는 용어들이 어려워서 원서랑 비교해가면서 공부해봤지만,

    그래도 이해가 안가는 부분이 꽤 많았다.

    특히 9-2 변성에서 out position, in position, 공변성, 가변성 등의 내용들이

    한글로 잘 풀어져있어도 이해하기 힘든 내용 같아 보이는데,

    처음에는 번역이 잘 안돼서 이해가 안가는건가 싶었지만, 원서에 보니 그대로 작성돼 있었다.

    이런 내용에 대해 질문하려면 어느정도 나도 질문을 잘 해야될텐데,

    어떻게 질문을 해야 할지 감이 안잡혀서 혼자 좀 더 찾아봐야겠다고 생각했다.

     

    10장은 애너테이션(Annotation)과 리플렉션(Reflection)이다. 

    어노테이션은 들어봤는데, 리플렉션은 앞에 내용만 살짝 보니 API라고 한다.

    슬슬 추워지고 게을러지고 싶어져서 스터디 준비도 원래 월~목요일 정도에 다 끝냈는데

    지금은 목~일요일 까지 하면서 준비하는 요일도 점점 밀리고 있다.

    쉽지않은데, 그래도 잘 마무리 됬으면 좋겠다.

    반응형

    댓글

Designed by Tistory.