W źródle Scala, znalazłem:Dlaczego `zerowe jest zdefiniowany jako` przypadku object`
case object Nil extends List[Nothing] {
...
}
Nie mogę zrozumieć, dlaczego to jest zadeklarowana jako case object
zamiast object
?
Znalazłem to pytanie [Difference between case object and object] jest przydatna, i myślę, że z tego powodu jest kluczem:
domyślne implementacje serializacji
ponieważ często wysyłają listy danych do innego uczestnika, więc Nil musi być możliwy do serializacji, prawda?
pomocą dostarczonych odpowiedzi (dzięki), staram się napisać kod, aby go zweryfikować:
trait MyList[+T]
object MyNil extends MyList[Nothing]
val list: MyList[String] = MyNil
list match {
case MyNil => println("### is nil")
case _ => println("### other list")
}
Widać MyNil
nie jest case object
, ale nadal można go używać w dopasowywanie wzorca. Tutaj jest wyjście:
### is nil
Czy źle rozumiem coś?