- ( Scala -), , , , , , .
. , Animal breed, Animal Animal.
trait Animal {
def breed(a: Animal): Animal
}
, , , - breed, , , .
class Cow extends Animal {
def breed(c: Cow) = new Cow
}
, breed . , , .
:
trait Animal[A <: Animal[A]] {
def breed(a: A): A
}
class Cow extends Animal[Cow] {
def breed(c: Cow) = new Cow
}
EECOLOR, F- .