我有两个case类:
case class B(value:Int)
case class A(a:String, b:B*) extends ALike
,我想在A的实例上做模式匹配:
def foo(al:ALike) = {
al match {
case A(a, bs) => ...
}
}
Scalac不理解bs
是一个Seq[B]
,认为它只是一个B
。为什么会出现这种情况,我应该如何进行模式匹配?
这是一个varargs参数,因此需要显式地向编译器解释这一点。使用以下大小写表达式:
def foo(al:ALike) = {
al match {
case A(a, bs @ _*) => ...
}
}