对带有* (varargs)参数的case类进行模式匹配



我有两个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 @ _*) => ...
  }
}

最新更新