Study(종료)/Kotlin 22.09.13 ~ 12.18

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

Ski_ 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라고 한다.

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

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

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

반응형