Say I see this:
object ThingA extends OtherThingA[ThingB, ThingA] {...
and this:
trait OtherThingA[B, A <: LastThing[B]] extends ...
What is this doing exactly?
Here is what I understand:
- ThingA is using the trait OtherThing and so has to implement the trait's methods or it now has access to the concrete public members.
I guess when we actually extends OtherThingA
, we're extending it and declaring the types of it too which are ThingB
and ThingA
?