Pergunta

Eu vi esse caso classe no pacote actors Scala:

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

E no JavaDoc descreve o uso da seguinte forma:

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

Porque é que este não:

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

é o operador estrondo! um caso especial de uma forma semelhante aos métodos que terminam em dois pontos:

Foi útil?

Solução

Ao fazer a correspondência de padrão, o compilador Scala irá interpretar o1 c1 o2 o mesmo que c1(o1, o2). É por isso que :: trabalha dentro padrão corresponde também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top