In scala Quelle, fand ich:Warum `Nil` als` Fall definiert object`
case object Nil extends List[Nothing] {
...
}
Ich kann nicht verstehen, warum es als case object
erklärt wird, statt object
?
fand ich diese Frage [Difference between case object and object] nützlich ist, und ich denke, aus diesem Grund ist der Schlüssel:
Standardimplementierungen von Serialisierung
weil wir oft senden Liste der Daten an einen anderen Akteur, Also muss Nil serialisierbar sein, oder?
Mit den gegebenen Antworten (danke), ich versuche, einige Code zu schreiben, um es zu überprüfen:
trait MyList[+T]
object MyNil extends MyList[Nothing]
val list: MyList[String] = MyNil
list match {
case MyNil => println("### is nil")
case _ => println("### other list")
}
Sie können sehen, MyNil
nicht case object
ist, aber ich kann es immer noch in Musterabgleich verwenden. Hier ist der Ausgang:
### is nil
Versteh ich etwas falsch?