为什么我们不能在scala模式匹配中使用Any或Nothing?

时间:2014-10-08 13:32:56

标签: scala case

我注意到在以下情况下,可以使用scala类型“Int”,但Any或Nothing不能。

user match {
case Int => "scala int"
case Any => "?"
}

scala的案例类如何以及为什么将这些类型区分为 matchable

2 个答案:

答案 0 :(得分:1)

根本没有任何类型(没有这种类型的实例 - http://www.scala-lang.org/api/2.10.4/index.html#scala.Nothing)。要匹配任何你可以使用_

答案 1 :(得分:1)

如果你写得正确:

user match {
  case _: Int => "scala int"
  case _: Any => "?"
}

你可以使用Any(尽管它没有用,正如Eugene指出的那样)。您无法使用Nothing,因为它永远无法匹配。