Вы используете неправильный экстрактор!:+
подразумевает, что первая часть является частью (внешнего) Seq, следовательно, a
и b
имеют тип Seq[String]
, а не String
, в то время как вторая часть Seq(c,d)
и tail
рассматриваются как элементы, поэтому c
и d
на самом деле String
.
Обычно это не проверка типа, но в случае, когда тип элемента равен Seq
, это так.Однако если вы предполагаете, что a
и b
равны String
, и попытаетесь обработать их как таковые, средство проверки типов может выразить недовольство, что приведет к еще большей путанице.
Правильный экстрактор - +:
.Двоеточие идет на стороне последовательности, а плюс на стороне элемента.Следовательно,
case Seq(a, b) +: Seq(c, d) +: tail => true
соответствует ожидаемому.