I have a situation where I want to specify that a trait I have will implement another trait. However I want the method, on the final subclasses, to work for things of the same type only. A clearer explanation is in the code snippet below:
I want the
Animal trait to implement something like the
Eq trait. But I also want the concrete subtypes to only be comparable with each other (Because a Dog and Cat with the same name aren’t the same, for example) .
I was able to get what I wanted working in the above example by using F-Bounded polymorphism and a self type; however it seems somewhat verbose.
I thought I could simplify things by using
this.type, but it doesn’t seems to work. Doesn’t anyone know why, or if
this.type can be used as an argument to a type parameter?