Совпадение нескольких классов дел в Scala

Я выполняю сопоставление с некоторыми классами дел и хотел бы обрабатывать два случая одинаково. Что-то вроде этого:

abstract class Foo
case class A extends Foo
case class B(s:String) extends Foo
case class C(s:String) extends Foo


def matcher(l: Foo): String = {
  l match {
    case A() => "A"
    case B(sb) | C(sc) => "B"
    case _ => "default"
  }
}

Но когда я делаю это, я получаю ошибку:

(fragment of test.scala):10: error: illegal variable in pattern alternative
    case B(sb) | C(sc) => "B"

Я могу заставить его работать, если я удалю параметры из определения B и C, но как я могу соответствовать параметрам?

Ответы на вопрос(3)

Ваш ответ на вопрос