我注意到,在以下情況下,可以使用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