스칼라에서는 혼합 클래스를 만드는 특성을 가질 수 있습니까 final
?혼합 할 때 클래스를 최종 클래스로 변환
이 클래스가 특성에서 혼합되면 클래스에서 상속하지 못하게해야하지만 이것이 가능한지 확실하지 않습니다. 어쩌면 나는 그것을위한 매크로가 필요할 것이다.
트릭은 회원을 특성에 두 번 섞는 것을 피하기 위해 정의하는 것과 같지만 달성해야하는 것은 아닙니다.
예 :
trait MyTrait
class A extends MyTrait
class B extends A
def myFun[T <: MyTrait](t: T)
이 기능뿐만 아니라/믹스 인 MyTrait
을 구현하지만 T
는 기본 클래스이며, 무엇을 실제로 t
로 전달하는 경우 작동하지 않습니다 로직을 포함한다고 가정 할 T
이 필요 자식은 T
입니다. 예 : myFun[A](new B)
.
분명히 이것은 대소 문자가 있지만 어쩌면 매개 변수로 전달 된 t
이 정확히 T
이어야하며 그 중 하나의 자식이 아닌지 확인/지정하는 방법이 있습니다. 이것이 가능한지 나는 모른다. 그리고 그것이 최선의 해결책이 될 것이다.
찾을 수있는 가장 가까운 것은 T
이 최종이며 가장 좋은 것은 적용하는 MyTrait
에 무엇인가를 쓰는 것입니다.
내 질문에.
또는 T
이 사례 클래스인지 어떻게 확인할 수 있습니까?
나는 그것이 가능하지 않다고 생각한다. 달성하고자하는 일에 대해 좀 더 자세히 설명해 주시겠습니까? –
재미있는 부분은 Miles Sabin입니다. https://gist.github.com/milessabin/ace99b2feaa6e4e8822cda08d79cb91e – Haspemulator