2014-10-08 79 views
2

我注意到,在以下情況下,可以使用scala類型「Int」,但是Any或Nothing不能。爲什麼我們不能在Scala模式匹配中使用Any或Nothing?

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

如何以及爲什麼Scala的case類,這些類型區分爲可匹配

+4

當你寫'case Int =>'你可能沒有得到你所期望的。它只會匹配'Int'伴侶對象,它提供了例如「Int.MaxValue」等。 – 2014-10-08 13:52:10

回答

1

如果你正確地寫:

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

可以使用Any(儘管它是沒有用的,因爲尤金指出)。你不能使用Nothing,因爲它永遠不會匹配。

相關問題