2009-10-22 6 views
5

Pregunta simple. ¿Puedo hacer esto:Singleton Scala actor?

object Xyz extends Actor { ... } 

o do Los actores tienen que ser clases con instancias?

+0

pensamiento: Si no podía hacer esto, tan sólo pudiera tener un 'object' que tiene el actor como miembro ... – Joe

+0

pensamiento: ¿Por qué no probarlo y ver –

Respuesta

6

La palabra clave object básicamente crea una clase anónima y una instancia única de esa clase. Así que sí, ese código estará bien: Xyz será una referencia a un objeto que es un Actor.

+0

Gracias, eso es lo que pensé. Intenté esto y compiló bien, pero los mensajes no parecen ser recibidos por el actor. – Joe

+0

Parece que ese problema no estaba relacionado con 'object' o no. Resuelto – Joe

+1

con scala 2.8, obtengo este error: creación de objeto imposible, ya que el método actúa en el rasgo Reactor de tipo() La unidad no está definida – Aaron

2

me gustaría recomendar el 'dispara y olvida' siguiente patrón:

Actor.actor {} hacerTarea

Su operación se ejecutará en un hilo separado a la conclusión.

12

Objeto que se extiende Actor funciona bien.

Quizás se olvidó de start el actor? (Que es un error que yo inicialmente)

object Xyz extends Actor { 
    start 

    ... 
} 
+3

Sí, me olvidé de iniciar al actor (pero me avergonzaba decir ...) ¡Gracias! – Joe

+1

@Joe Quizás debería marcar esto como la respuesta correcta para ayudar a los futuros visitantes – HRJ

+0

Hola HRJ. Complicado. Lachlan respondió la pregunta correctamente primero. La razón por la que pregunté fue motivada por el hecho de que no había comenzado el actor, pero estrictamente eso no estaba en mi pregunta. Creo que me quedaré con la respuesta de Lachlan en aras de la corrección, lo siento. – Joe

Cuestiones relacionadas