X::Anon::Multi — 익명 multi 선언 오류

X::Anon::Multi — 익명 multi 선언 오류 (Anonymous multi declaration)

multi라는 키워드가 붙은 서브루틴이나 메서드는 이름이 있어야 구분할 수 있는데, 그 이름이 빠진 채로 multi를 선언하려 하면 어떻게 될까요? Raku는 이 상황을 컴파일 시점 오류로 처리해요. 그 오류를 담당하는 타입이 X::Anon::Multi예요.

출처: Raku Documentation — X::Anon::Multi

본문

익명 multi를 선언하려고 하면 컴파일 시점 오류(compile time error)가 발생해요.

class X::Anon::Multi does X::Comp { }

예를 들어 다음처럼 이름 없는 multi 메서드를 선언하면,

multi method () { }

이런 메시지와 함께 실패해요.

Cannot put multi on anonymous method

multi는 같은 이름의 여러 후보를 구분하기 위한 기능이니, 이름이 없는 익명 메서드에는 붙일 수가 없어요.

메서드 multiness

method multiness(--> Str:D)

원래 코드가 사용한 multiness가 무엇인지 문자열로 돌려줘요. 예를 들어 "multi""proto" 같은 값이에요.

메서드 routine-type

method routine-type(--> Str:D)

선언된 루틴의 종류를 문자열로 돌려줘요. 예를 들어 "sub""method" 같은 값이죠.

더 알아보기 (Learn more)