这两个Scala模式之间有什么区别?

时间:2017-04-28 19:57:18

标签: scala

在Scala 2.10.6中,与

不匹配的对象之间的区别是什么
case Array((_, workItem: WorkItem)) => 

但会匹配

case things: Array[_] => things.foreach { case (_, workItem: WorkItem) => 

我看到这种情况发生了。有些对象与第一个对象匹配,其他对象与第一个对象不匹配,但与第二个对象匹配。如果没有第二种形式,则抛出MatchError:

scala.MatchError: [Lscala.Tuple2;@43d82d2a (of class [Lscala.Tuple2;)

1 个答案:

答案 0 :(得分:3)

第一个是将Array[(_, WorkiItem)]与一个元素匹配,第二个匹配任何Array,如果所有元素都是foreach,则不会在(_, WorkItem)中抛出MatchError