525
14
장
스칼라 타입 시스템 I
14.1.2
타입 생성자
때로 매개변수화한 타입이라는 말 대신 타입 생성자
type
constructor
라는 용어를 사용하는 것을 볼
수 있다. 이는 어떤 클래스의 인스턴스를 만들어낼 때 인스턴스 생성자를 사용하는 것처럼, 구
체적인 타입을 만들어낼 때 매개변수화한 타입을 사용한다는 사실을 반영한다.
예를 들어
List
는 서로 다른 두 타입
List
[
String
]
과
List
[
Int
]
의 타입 생성자다. 사실 모든 클
래스를 타입 생성자라고 말할 수도 있다. 타입 매개변수가 없는 클래스는 실제로는 타입 매개변
수 인자가 하나도 없는 ‘매개변수화한 타입’이라고 생각할 수 있다.
14.1.3
타입 매개변수의 이름
타입 매개변수에 자신을 설명할 수 있는 이름을 부여하는 것을 고려해보라. 새로운 스칼라 개
발자들의 불만 중 하나는
List
.+:
과 같은 메서드의 스칼라독이나 구현에서 타입 매개변수에
A
나
B
같이 너무 간결한 이름이 사용된다는 것이다. 한편 다음과 같은 간단한 규칙을 따르면 이런
기호를 어떻게 해석해야 할지 쉽게 배울 수 있다.
1
. 컨테이너 원소 타입과 같이 아주 일반적인 타입 매개변수에 대해서는
A
,
B
,
T1
,
T2
와 같이
한두 자로 된 이름을 사용하라. 실제 원소 타입의 이름은 컨테이너와는 아무 관계가 없다
는 점에 주의하라.
List
는 문자열, 수, 다른 리스트 등 어떤 타입의 물건을 원소로 담더라
도 동일하게 작동한다. 이런 식의 분리는 ‘제네릭 프로그래밍’을 가능하게 해준다.
2
. 하부 컨테이너와 ...