具有*(varargs)参数的案例类的模式匹配

时间:2015-10-27 16:30:40

标签: scala pattern-matching

我有两个案例类:

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不理解bsSeq[B]并且认为它只是一个B。为什么会这样,我该如何进行模式匹配呢?

1 个答案:

答案 0 :(得分:8)

这是一个varargs参数,所以你需要明确地向编译器解释。使用以下大小写表达式:

def foo(al:ALike) = {
  al match {
    case A(a, bs @ _*) => ...
  }
}