"Scala编程"中描述了密封类,但密封特性不是.我在哪里可以找到有关密封特性的更多信息?
我想知道,如果密封的特性与密封的类相同吗?或者,如果没有,有什么区别?何时使用密封特性(何时不是)?
让我们说我有一个特点,父母,有一个孩子,孩子.
scala> sealed trait Parent
defined trait Parent
scala> case object Boy extends Parent
defined module Boy
Run Code Online (Sandbox Code Playgroud)
我写了一个函数,模式匹配密封的特征.我的f功能是完全的,因为只有一个Parent实例.
scala> def f(p: Parent): Boolean = p match {
| case Boy => true
| }
f: (p: Parent)Boolean
Run Code Online (Sandbox Code Playgroud)
然后,2个月后,我决定添加一个Girl孩子Parent.
scala> case object Girl extends Parent
defined module Girl
Run Code Online (Sandbox Code Playgroud)
然后重新编写f方法,因为我们正在使用REPL.
scala> def f(p: Parent): Boolean = p match {
| case Boy => true
| }
<console>:10: warning: match may …Run Code Online (Sandbox Code Playgroud)