此代码位于" 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"
}
返回:警告:无法访问的代码 案例_⇒"未找到"
为什么警告代码?请回复......
答案 0 :(得分:2)
由于unapply
的返回类型为Some
,因此Scala知道匹配永远不会失败,并且永远无法达到后续案例。
如果您明确声明返回类型为Option
,则警告将消失,但这不会改变case _
永远无法实现的事实。