Учитывая простой тип алгебраических данных Parent
:
scala> sealed trait Parent
defined trait Parent
scala> case object Boy extends Parent
defined object Boy
scala> case object Girl extends Parent
defined object Girl
Я определил признак:
scala> trait HasGirl {
| val x: Girl.type
| }
defined trait HasGirl
Затем я создал класс case, который реализовал HasGirl
, но при условии x
значения Boy.type
.
scala> case class Thing(x: Boy.type) extends HasGirl
defined class Thing
Я ожидал ошибку времени компиляции, так как не вижу, как x
типа Boy.type
соответствует val x: Girl.type
.
Что здесь происходит?