공통베이스에서 파생되는 약의 클래스 계층 구조를 정의하고자합니다. 유형은 this one과 같이 AST 계층의 노드를 설명합니다. 나는의 라인을 따라 뭔가를하고 싶습니다 내 copy
의 존재가 자동 복사를 정의에서 case classes
을 방지하기 때문에많은 사례 클래스가있는 클래스 계층 구조에 대한 공통 복사본을 정의하십시오.
trait Base {
def doCopy: Base
}
trait CloneSelf[T <: CloneSelf[T]] extends Base {
self: T =>
def copy(): T
override def doCopy: T = copy()
}
case class CaseA(a: String) extends Base with CloneSelf[CaseA]
case class CaseB(b: Int) extends Base with CloneSelf[CaseB]
는이 오류를 제공합니다. 거기에 어떤 방법으로 "클론"doCopy
구현하는그 중 case classes
자동 사용합니까?
자동 복사본을 계속 가져 오는 동안이 문제를 피하기 위해 계층 구조를 디자인하는 일반적인 패턴이 있습니까? (그리고 당신은이 일을하는 데 악이 무엇인지 자세히 설명해 줄 수 있습니까?) – Suma
"당신이베이스 클립에서 한 번의 변화를한다고 상상하십시오." 나는 IDE를 사용하고 있기 때문에 그의 이유를 보지 못하거나 이것에 대한 검색과 바꾸기 때문에 몇개의 클래스가 중요하다. 이것이 사악한 심각한 이유가 있습니까? 기본 클래스의 일반적인 변경으로 인해 파생 클래스에서 변경 사항을 상속하므로 아무 것도 변경하지 않습니다. – Suma
"모든 하위 클래스에서 변경해야합니다." . .또는 당신의 IDE가 당신을 위해 그것을하도록하십시오. – adrice727