警告:Scala repl中的代码不可访问

警告:Scala repl中的代码不可访问,scala,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) =

此代码位于“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"
}
返回:警告:无法访问代码 案例⇒ “未找到”


为什么是警告代码??请回复…

由于
不适用
的返回类型是
Some
,Scala知道匹配永远不会失败,也永远不会到达后续案例


如果将返回类型显式声明为
选项
,警告将消失,但这不会改变
案例
永远无法实际到达的事实。

因为
的返回类型是
某些
,Scala知道这场比赛永远不会失败,也永远不会有后续的比赛


如果将返回类型显式声明为
选项
,警告将消失,但这不会改变
案例
永远无法实际到达的事实。

我不明白。你能给我看一下关于显式代码作为类型是选项的代码吗@이창언 您是否理解,
案例=>“未找到”
实际上永远无法到达?如果没有,你能描述一个你认为应该达到的情况吗?我知道了。这些代码永远不会失败。非常感谢你。这是我的错误@이창언 关于类型,我的意思是
def unapply(x:Employee):Option[(String,String)]=…
。同样,这不会改变这个案例永远无法到达的事实,但它会对编译器隐藏这个事实。我不明白。你能给我看一下关于显式代码作为类型是选项的代码吗@이창언 您是否理解,
案例=>“未找到”
实际上永远无法到达?如果没有,你能描述一个你认为应该达到的情况吗?我知道了。这些代码永远不会失败。非常感谢你。这是我的错误@이창언 关于类型,我的意思是
def unapply(x:Employee):Option[(String,String)]=…
。同样,这不会改变案例永远无法到达的事实,但会对编译器隐藏这一事实。