mro — 메서드 해석 순서 알아보기
mro — 메서드 해석 순서 알아보기
여러 타입이 상속으로 얽혀 있을 때, 메서드를 호출하면 어느 타입의 메서드가 먼저 불릴까요? Raku는 그 순서를 Metamodel::C3MRO라는 역할(role)이 정해줘요. 이 페이지는 그 역할에 속한 mro 메서드가 무엇을 돌려주는지 설명해요.
출처: Raku 공식 문서 — mro
본문
In role Metamodel::C3MRO
method mro($type)
mro는 메서드 해석 순서(method resolution order)에 따라 타입의 목록을 돌려줘요. 여기에는 is hidden으로 표시된 타입까지 모두 포함돼요.
say Int.^mro; # OUTPUT: «((Int) (Cool) (Any) (Mu))»
Int에 대해 mro를 호출하면 Int 자신부터 Cool, Any를 거쳐 최상위 타입인 Mu까지, 메서드를 찾아볼 순서대로 타입이 나열되는 걸 볼 수 있어요. 덕분에 특정 메서드가 어떤 조상에서 상속됐는지 추적할 때 이 목록을 쓰면 편해요.