27-04-2012, 12:48 PM
Il y a une discussion dans les topics Erlang concernant les acteurs, Scala a copié le principe des Acteurs du langage Erlang.
Voici un exemple des acteurs en Erlang : http://www.jeuweb.org/showthread.php?tid...#pid107529
Voici l'équivalent en Scala :
On peut constater que ça reste très semblable, mais qu'il y a tout de même des grosses différences.
Par exemple en Scala on n'a pas à relancer l'acteur une fois qu'il a traité un message, c'est fait automatiquement, si on veut que l'acteur se termine on lui demande explicitement avec exit.
Voici un exemple des acteurs en Erlang : http://www.jeuweb.org/showthread.php?tid...#pid107529
Voici l'équivalent en Scala :
import scala.actors.Actor
import scala.actors.Actor._
class Character extends Actor
{
def act
{
loop {
react {
case (sender: Actor, "introduce") =>
println(self + " received introduce message from " + sender)
sender ! "reply"
case "reply" =>
println(self + " received reply message.")
case _ =>
println(self + " received other kind of message. Stop listening.")
exit
}
}
}
}
object Test extends App {
val character1 = new Character
val character2 = new Character
character1.start
character2.start
character1 ! (character2, "introduce")
character1 ! (character2, "introduce")
character2 ! (character1, "introduce")
}
On peut constater que ça reste très semblable, mais qu'il y a tout de même des grosses différences.
Par exemple en Scala on n'a pas à relancer l'acteur une fois qu'il a traité un message, c'est fait automatiquement, si on veut que l'acteur se termine on lui demande explicitement avec exit.