【发布时间】:2014-08-21 01:20:27
【问题描述】:
在 scala 源码中,我发现:
case object Nil extends List[Nothing] {
...
}
我不明白为什么它被声明为case object 而不是object?
我发现这个问题[Difference between case object and object]很有用,我猜这个原因是关键:
序列化的默认实现
因为我们经常将数据列表发送给另一个参与者,所以 Nil 必须是可序列化的,对吧?
根据提供的答案(谢谢),我尝试编写一些代码来验证它:
trait MyList[+T]
object MyNil extends MyList[Nothing]
val list: MyList[String] = MyNil
list match {
case MyNil => println("### is nil")
case _ => println("### other list")
}
您可以看到MyNil 不是case object,但我仍然可以在模式匹配中使用它。这是输出:
### is nil
我是不是误会了什么?
【问题讨论】: