add_method — 메타클래스에 메서드 추가하기

add_method — 메타클래스에 메서드 추가하기

클래스에 메서드를 추가하는 건 보통 method 키워드로 선언하지만, 메타클래스 레벨에서 직접 메서드를 등록하는 API도 있어요. add_method가 그 역할을 해요. 타입이 구성(compose)되기 전에만 호출할 수 있다는 제약이 핵심이에요.

출처: Raku 공식 문서 — add_method

본문

In role Metamodel::MethodContainer — 이름 달아 메서드 등록

method add_method($obj, $name, $code)

메타클래스에 메서드를 하나 추가해요. 이 메서드는 이름 $name으로 불리게 돼요. 즉 $code가 가리키는 코드 객체를 $name이라는 이름의 메서드로 등록하는 거예요.

여기서 놓치기 쉬운 조건이 하나 있어요. 이 작업은 타입이 구성(compose)되기 전에만 해야 해요. 한번 조립된 타입에 메서드를 더 추가하려고 하면 의도한 대로 동작하지 않으니, 메타클래스를 다룰 때는 이 시점 제약을 꼭 기억해야 해요.