警告:Scala repl中无法访问的代码

时间:2016-12-29 11:48:13

标签: scala

此代码位于" scale-exercises.org"站点

class Car(val make: String, val model: String, val year: Short, val topSpeed: Short)
class Employee(val firstName: String, val middleName: Option[String], val lastName: String)

object Tokenizer {
  def unapply(x: Car) = Some(x.make, x.model, x.year, x.topSpeed)

  def unapply(x: Employee) = Some(x.firstName, x.lastName)
}

val result = new Employee("Kurt", None, "Vonnegut") match {
  case Tokenizer(c, d) ⇒ "c: %s, d: %s".format(c, d)
  case _ ⇒ "Not found"
}

返回:警告:无法访问的代码          案例_⇒"未找到"

为什么警告代码?请回复......

1 个答案:

答案 0 :(得分:2)

由于unapply的返回类型为Some,因此Scala知道匹配永远不会失败,并且永远无法达到后续案例。

如果您明确声明返回类型为Option,则警告将消失,但这不会改变case _永远无法实现的事实。