을 여러 상속을 시뮬레이션스칼라
을def alpha(x: X)
def beta(y: Y)
는 동적으로 단지 X
및 Y
에서 모든 정의를 병합하는 클래스 XY
를 만들려는 여전히 타입 안전성을 유지합니다. 더 구체적으로 이전에 정의 된 alpha
및 beta
은 여전히이 병합 된 클래스를 허용합니다.
나는 스칼라 예를 들어, 특성에 혼합 허용 알고 : 잘 작동
trait T
class A
val ta = new A with T
합니다.
그러나, 나는 클래스와 함께 할 수없는 다음 with ..
으로
class X
class Y
val xy = new X with Y
는 특성해야합니다.
trait xV extends X
trait yV extends Y
val xy = new xV with yV
불행하게도이 작동하지 않고 다음과 같은 오류를 제공합니다 :
나는 다음을 수행하여이 문제를 우회 시도
Error:(33, 26) illegal inheritance; superclass X
is not a subclass of the superclass Y
of the mixin trait yV
val xy = new xV with yV
어떤 도움을 주시면 감사하겠습니다.
편집 :
가 명확히하기 위해 내가 클래스 X
또는 Y
을 수정할 수 없습니다 수 있습니다.
이것은 실제로 매우 유용 할 수 있습니다. 다시보고 할게. 고맙습니다. – Crembo
이 솔루션이 어느 정도 작동하는 것처럼 보입니다. 그러나'toX' 변환이'toY'보다 우선 적용되도록하는 방법이 있습니까? – Crembo
예,'toY'를'object XY'가 연장하는 형질로 옮기십시오. –