Jaka jest przyczyna dodania słowa kluczowego „case” do Scali?

Oprócz:

case class A

...walizka co jest całkiem przydatne?

Dlaczego musimy korzystaćcase wmatch? Czy nie:

x match {
  y if y > 0 => y * 2
  _ => -1
}

... byćdużo ładniejszy i zwięzły?

Albo dlaczego musimy korzystaćcase kiedy funkcja przyjmuje krotkę? Powiedzmy, że mamy:

val z = List((1, -1), (2, -2), (3, -3)).zipWithIndex

Teraz nie jest:

z map { case ((a, b), i) => a + b + i }

...sposób brzydszy niż tylko:

z map (((a, b), i) => a + b + i)

...?

questionAnswers(4)

yourAnswerToTheQuestion