add_attribute — 메타클래스에 속성(attribute) 추가하기

add_attribute — 메타클래스에 속성(attribute) 추가하기

클래스를 만들 때 has로 속성을 선언하는 걸 보통 Attribute 객체로 메타클래스가 관리해요. add_attribute는 그 메타클래스 레벨에서 속성을 하나 추가해 주는 메서드예요. 직접 쓰는 일은 드물지만, 자기만의 HOW(High Order Work)를 만들 때 필요한 지점이에요.

출처: Raku 공식 문서 — add_attribute

본문

In role Metamodel::AttributeContainer — 속성 등록

method add_attribute($obj, $attribute)

속성을 하나 추가해요. 이때 $attributename, type, package라는 메서드를 인자 없이 호출할 수 있는 객체여야 해요. 대표적인 예가 바로 Attribute 타입이에요. 즉 그 메서드 세 개를 지원하기만 하면 어떤 객체든 '속성'으로 등록할 수 있다는 뜻이죠.

메타클래스 관심사다 보니 메서드가 시그니처만 던져 주고 반환값은 따로 명시하지 않는 경우가 많아요. AttributeContainer를 역할(role)로 포함하는 HOW가 이 메서드를 통해 속성 목록을 채워 나간다고 이해하면 돼요.