믹스인

믹스인 (Mixins)

믹스인(mixin)은 클래스 확장을 캡슐화해 두고, 슈퍼클래스를 나중에 지정할 수 있게 만들어 주는 특수 형식이에요. 같은 확장 로직을 여러 클래스에 재사용하고 싶을 때 유용합니다.

출처: Racket Reference - Mixins

본문

문법

(mixin (interface-expr ...) (interface-expr ...) class-clause ...)

믹스인을 만들어 내는 형식이에요. 믹스인은 클래스 확장을 캡슐화한 프로시저인데, 슈퍼클래스는 아직 지정하지 않은 상태로 둡니다. 믹스인을 어떤 구체적인 슈퍼클래스에 적용할 때마다, 캡슐화된 확장을 사용해 그 슈퍼클래스에서 파생된 새 클래스를 만들어 내죠.

주어진 클래스는 첫 번째 interface-expr들이 만들어 내는 인터페이스들을 반드시 구현해야 해요. 프로시저의 결과는 주어진 클래스의 서브클래스인데, 두 번째 interface-expr들이 만들어 내는 인터페이스들을 구현합니다. class-clause들은 class*에서와 같으며, 믹스인이 캡슐화하는 클래스 확장을 정의해요.

mixin 형식을 평가하면 class-clause들이 두 인터페이스 집합 모두와 일관적인지 검사합니다.

더 알아보기