2014-10-08 71 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,因为它永远不会匹配。

相关问题