2009-06-29 11 views
13

Я только что видел этот случай класс в Scala actors пакет:Как работает шаблон соответствия класса case?

case class ! [a](ch: Channel[a], msg: a) 

И в JavaDoc он описывает использование в следующем виде:

receive { 
    case Chan1 ! msg1 => ... 
    case Chan2 ! msg2 => ... 
} 

Почему это не так:

receive { 
    case !(Chan1, msg1) => ... 
    case !(Chan2, msg2) => ... 
} 

Является оператором взрыва! специальный случай аналогично методам, заканчивающимся в двоеточии:

ответ

33

При выполнении сопоставления рисунков компилятор Scala будет интерпретировать o1 c1 o2 так же, как c1(o1, o2). Вот почему :: работает внутри шаблонов.

+2

Приветствия за ответ. Стыдно, что от ответа на вопросы Scala больше нет баллов! –

 Смежные вопросы

  • Нет связанных вопросов^_^