Raku의 BIND-KEY — 연관 첨자의 값에 바인딩
Raku의 BIND-KEY — 연관 첨자의 값에 바인딩
해시 같은 연관(associative) 구조에서 첨자로 접근하는 자리에 값을 바인딩하고 싶을 때가 있어요. 일반 할당(=)이 아니라 바인딩(:=)을 쓰고 싶을 때 그 동작을 담당하는 메서드가 BIND-KEY예요. 해시에 %age<Claire> := $x처럼 쓰면 내부적으로 이 메서드가 호출돼요.
multi method BIND-KEY (::?CLASS:D: $key, \new)
본문
BIND-KEY는 $key와 연결된 자리에 값(또는 컨테이너) new를 바인딩할 것을 기대해요. 그 자리에 자연스럽게 놓여 있던 컨테이너는 새 값으로 교체되는 거죠. 코드로 쓰면 이렇게 돼요.
my $x = 10;
%age<Claire> := $x;
이 %age<Claire> := $x에서 :=는 바인딩 연산자예요. 이 문장이 실행될 때 %age가 일반 Hash라면 내부에서 BIND-KEY가 불려요.
일반 Hash 클래스는 이 메서드를 지원해서 복잡한 연결형(linked) 데이터 구조를 만들 수 있게 해줘요. 다만 더 도메인 특화적인 타입이라면 이 동작이 의미가 없을 수 있으니, 꼭 구현해야 한다고 부담 가지지 않아도 돼요. 구현하지 않으면 사용자가 그 타입 객체의 연관 자리에 바인딩을 시도할 때 적절한 오류 메시지를 받게 돼요.