Я пытаюсь определить бинарное дерево со следующим определением:Scala шаблону с типом Option
trait Node {
val label: Int
}
case class BranchNode(override val label: Int, left: Option[Node], right: Option[Node]) extends Node
case class LeafNode(override val label: Int) extends Node
, а затем определить простой printTree
метод с использованием шаблона в Scala соответствия, как показано ниже:
def printTree(aTree: Option[Node]): Unit = aTree match {
case None => print(".")
case Some(LeafNode(label)) => print(label)
case Some(BranchNode(label, left, right)) => "{" + printTree(left) + label + printTree(right) + "}"
}
Intellij IDE предупреждает меня, что матч не может быть исчерпывающим. Option
может иметь None
или Some
как его значения. В случае Option[Node]
он может быть либо Some(LeafNode)
, либо Some(BranchNode)
. Какие еще случаи я не замечаю?