¿Es posible en Scala tener dos métodos con firmas idénticas en una clase?

Me gustaría escribir una biblioteca de modo que los clientes pudieran escribir código como el siguiente. Está en pseudo Scala ya que no sé si es sintácticamente posible

class ClientCode {

    historical {
        override def onTrade() { // historcal processing here}  
    }

    override def onTrade() { // real time processing here }
}

Básicamente, lo que me gustaría hacer es enviar datos comerciales al cliente. Hay datos históricos y en tiempo real que tienen diferentes reglas comerciales. Sintácticamente, me gustaría que todo lo manejara onTrade (). Podría hacer algo como lo siguiente

override def onTrade() {

    if (historical) { } ...
    else {} 

}

Sin embargo, las reglas históricas son cortas y opcionales en comparación con las reglas en vivo largas y obligatorias, por lo que encuentro la sintaxis anterior un poco engorrosa.

preguntado el 27 de agosto de 11 a las 23:08

1 Respuestas

Puedes tener un rasgo

trait Historical extends ClientCode {
  override def onTrade() { ... }
}

y entonces

val c = new ClientCode with Historical

para usar el anulado onTrade(). ¿Es suficiente?

Respondido 28 ago 11, 04:08

¿Esto obliga a una sola implementación de onTrade? Me gustaría que el cliente pudiera generar dos implementaciones separadas con la misma firma exacta en una sola clase. - deltanovember

Esto funciona con una sola implementación. La JVM no admite dos métodos con exactamente la misma firma en la misma clase. Necesita dos clases o necesita métodos diferentes (al menos con argumentos sobrecargados). Como lo que quieres es, estrictamente hablando, imposible, me preguntaba si lo anterior era lo suficientemente bueno. - Rex Kerr

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.