Você pode usar métodos de não aplicação fora das instruções de correspondência

Percebo que muitos desenvolvedores de scala não percebem que você pode usar unapply em qualquer parte do seu código.

Pegue alguma função que retorna uma tupla

scala> def foo = (1, 2)
foo
: (Int, Int)

Você pode extrair os valores com o operador unapply das tuplas

scala> val (l, r) = foo
l
: Int = 1
r
: Int = 2

Aqui está outro exemplo com classes de caso

scala> case class Bar(l: Int, r: Int)
defined class Bar

scala
> val bar = Bar(4, 5)
bar
: Bar = Bar(4,5)

scala
> var Bar(leftValue, rightValue) = bar
leftValue
: Int = 4
rightValue
: Int = 5