add_parent — 부모 타입(및 열거형의 기반 타입) 설정하기

add_parent — 부모 타입(및 열거형의 기반 타입) 설정하기

상속은 클래스 계층을 만드는 기본 도구예요. add_parent은 메타클래스 레벨에서 부모 타입을 추가하는 메서드인데, 용도가 두 갈래로 나뉘어요. 일반 클래스의 다중 상속을 다루는 쪽과, 열거형(enum)의 기반 타입을 정하는 쪽이에요.

출처: Raku 공식 문서 — add_parent

본문

In role Metamodel::MultipleInheritance — 부모 타입 추가

method add_parent($obj, $parent, :$hides)

$parent를 부모 타입으로 추가해요. 만약 $hides가 참(true)으로 설정되면, 그 부모 타입은 숨겨진 부모(hidden parent)로 추가돼요. 숨겨진 부모는 상속 목록에 이름이 드러나지 않는 부모라고 이해하면 돼요.

여기서 조건이 하나 있어요. $parent완전히 구성된(full composed) 타입이어야 해요. 그렇지 않으면 X::Inheritance::NotComposed 예외가 던져져요. 즉 아직 조립이 끝나지 않은 타입을 부모로 달면 안 된다는 뜻이죠.

In Metamodel::EnumHOW — 열거형의 기반 타입 설정

method add_parent($obj, $parent)

열거형(enum)의 기반 타입(base type)을 설정해요. 열거형은 숫자(int)나 enum과 같은 기반 타입 위에 값들을 얹는 구조잖아요. 이 메서드로 그 기반 타입을 정해 주는 거예요.

여기서 제약은 명확해요. 이 메서드는 .new_type에 기반 타입을 넘기지 않았을 때만 쓸 수 있어요. 즉 새 타입을 만들 때 기반 타입을 이미 지정했다면 이 메서드로 다시 바꿀 수 없다는 뜻이죠.