Я только что видел этот класс case в пакете Scala actors
:
case class ! [a](ch: Channel[a], msg: a)
И в JavaDoc он описывает использование в следующей форме:
receive {
case Chan1 ! msg1 => ...
case Chan2 ! msg2 => ...
}
Почему это не так:
receive {
case !(Chan1, msg1) => ...
case !(Chan2, msg2) => ...
}
Является оператором bang! специальный случай аналогично методам, заканчивающимся в двоеточие: