Squeryl을 기반으로 한 응용 프로그램이 있습니다. 주로 복사 메서드를 사용하는 것이 편리하다는 것을 알기 때문에 모델을 케이스 클래스로 정의합니다.
엄격하게 관련된 두 가지 모델이 있습니다. 필드는 동일하고 많은 작업이 공통되며 동일한 DB 테이블에 저장됩니다. 그러나 두 경우 중 하나에서만 의미가 있거나 두 경우 모두 의미가 있지만 다른 동작이 있습니다.
지금까지는 모델 유형을 구분하는 플래그가있는 단일 케이스 클래스 만 사용했으며 모델 유형에 따라 다른 모든 메소드는 if로 시작합니다. 이것은 성 가시고 형식이 안전하지 않습니다.
내가하고 싶은 것은 조상 케이스 클래스의 공통 동작과 필드를 고려하여 두 개의 실제 모델이 상속되도록하는 것입니다. 그러나 내가 이해하는 한, 케이스 클래스에서 상속하는 것은 Scala에서 눈살을 찌푸리고 하위 클래스 자체가 케이스 클래스 (내 경우가 아님) 인 경우에도 금지됩니다.
케이스 클래스에서 상속 할 때 알아야 할 문제점과 함정은 무엇입니까? 제 경우에 그렇게하는 것이 합리적입니까?