2010-09-23 8 views
1

Je me demandais comment appliquer une correspondance et un cas à ma méthode act(). Ceci est ma classe tempObjectApplication de cas à act() dans scala

case class tempObject(typeOfData: Int) {} 

Et ceci est mon acteur:

object StorageActor extends Actor { 

    def act(TO: tempObject) = TO match { 

    case TO(0) => println("True") 
    case TO(1) => println("False") 

    } 
} 

Donc, ce qui devrait arriver est, quand je passe un objet à agir(), il appelle la méthode souhaitée, selon les valeurs à l'intérieur de l'objet. Le code ci-dessus est-il correct pour effectuer ce que je désire?

Répondre

5

La méthode act sur la classe Actor n'est pas supposée être appelée avec une valeur. Il choisit les valeurs de la boîte aux lettres de l'acteur et travaille dessus. La bonne façon de le faire est la suivante:

case class TempObject(typeOfData: Int) 

object StorageActor extends Actor { 
    def act() { 
    loop { 
     react { 
     case TempObject(0) => println("True") 
     case TempObject(1) => println("False") 
     } 
    } 
    } 
} 

StorageActor.start 
StorageActor ! TempObject(0) 
StorageActor ! TempObject(1) 
+0

merci beaucoup. cela a dissipé une idée fausse. – theTuxRacer

Questions connexes