Я только начинаю свой, казалось бы, крутой период обучения работе с Scala и не совсем понимаю, как именно «case» работает в частичных функциях.
Я посмотрел на определение самой PartialFunction, и там я вижу пример, подобный следующему:
val isEven: PartialFunction[Int, String] = {
case x if x % 2 == 0 => x+" is even"
}
Я застрял в case x if x% 2 - как Scala узнает, что здесь что? Каково формальное определение этого оператора / ключевого слова "case"?
Я думаю, что одна из причин моего замешательства заключается в том, что в Lift я вижу такие вещи (в классах Actor):
override def messageHandler = {
case SomeKindOfUserMessageClass(id1, param1) => ....
case AnotherKindOfUserMessageClass(id2) => ....
}
Я как бы интуитивно понимаю, что здесь происходит, но не могу составить какое-то единое определение того, как следует использовать «case». Еще больше меня озадачивает то, как компилятор Scala все это распутывает.