我注意到,在以下情况下,可以使用scala类型“Int”,但是Any或Nothing不能。为什么我们不能在Scala模式匹配中使用Any或Nothing?
user match {
case Int => "scala int"
case Any => "?"
}
如何以及为什么Scala的case类,这些类型区分为可匹配?
我注意到,在以下情况下,可以使用scala类型“Int”,但是Any或Nothing不能。为什么我们不能在Scala模式匹配中使用Any或Nothing?
user match {
case Int => "scala int"
case Any => "?"
}
如何以及为什么Scala的case类,这些类型区分为可匹配?
没有什么不是真正的类型(不存在这种类型的实例 - http://www.scala-lang.org/api/2.10.4/index.html#scala.Nothing)。匹配任何你可以使用_
如果你正确地写:
user match {
case _: Int => "scala int"
case _: Any => "?"
}
可以使用Any
(尽管它是没有用的,因为尤金指出)。你不能使用Nothing
,因为它永远不会匹配。
当你写'case Int =>'你可能没有得到你所期望的。它只会匹配'Int'伴侣对象,它提供了例如“Int.MaxValue”等。 – 2014-10-08 13:52:10