Comment faire pour démarrer un Scala, akka acteur
Ci-dessous classe provoque une erreur à la ligne nouvelle HelloWorld :
Exception in thread "main" akka.actor.ActorInitializationException: You cannot create an instance of [HelloWorld] explicitly using the constructor (new). You have to use one of the 'actorOf' factory methods to create a new actor. See the documentation.
at akka.actor.ActorInitializationException$.apply(Actor.scala:219)
at akka.actor.Actor$class.$init$(Actor.scala:436)
at HelloWorld.<init>(HelloWorld.scala:4)
at Driver$.main(HelloWorld.scala:38)
at Driver.main(HelloWorld.scala)
J'ai donc essayer : val hw = actorOf(new HelloWorld)
Mais cela provoque une erreur de compilation :
not found: value actorOf
Comment doit HelloWorld ci-dessous seront mises en œuvre ?
En lisant d'autres Scala docs un acte méthode est exigé pour être définies au sein de la classe qui étend la classe Acteur et ensuite appeler la méthode start sur cette classe, est-il une raison pour l'utilisation de actorOf au lieu de définir une loi sur la méthode ?
Ci-dessous classe est prise de la Scala, akka docs http://doc.akka.io/docs/akka/2.2.0/scala.html :
import akka.actor.Actor
import akka.actor.Actor._
import akka.actor.Props
class HelloWorld extends Actor {
override def preStart(): Unit = {
//create the greeter actor
val greeter = context.actorOf(Props[Greeter], "greeter")
//tell it to perform the greeting
greeter ! Greeter.Greet
}
def receive = {
//when the greeter is done, stop this actor and with it the application
case Greeter.Done => context.stop(self)
}
object Greeter {
case object Greet
case object Done
}
class Greeter extends Actor {
def receive = {
case Greeter.Greet =>
println("Hello World!")
sender ! Greeter.Done
}
}
}
object Driver {
def main(args: Array[String]) {
new HelloWorld
}
}
loi() et start() appartiennent à l'ancienne et obsolète Scala acteurs, Akka est un autre acteur de la mise en œuvre, veuillez vous référer à la documentation akka.io.
merci pour le lien, après quelques recherches ce doc est utile : doc.akka.io/docs/akka/snapshot/scala/acteurs.html#acteurs-scala
merci pour le lien, après quelques recherches ce doc est utile : doc.akka.io/docs/akka/snapshot/scala/acteurs.html#acteurs-scala
OriginalL'auteur blue-sky | 2013-08-03
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de modifier votre principal comme indiqué ci-dessous. D'autre part, dans la ligne 5, vous devez le modifier pour
context.actorOf(Props(new Greeter))
. C'est parce que votreGreeter
n'a pasapply
fonction définie, par conséquent, vous devez créer manuellement Greeter objet vous-même.Code du travail ci-dessous:
OriginalL'auteur Jatin
Si vous souhaitez utiliser votre classe principale procédez de la manière suivante:
Qui permettra de créer un nouvel acteur du système, puis de créer le HelloWorld acteur à l'aide de cet acteur du système.
Vous pouvez également suivre la akka instructions:
jeu de Akka.Principal de la classe principale et donner le programme de "com.exemple.HelloWorld" comme argument.
OriginalL'auteur some some
Je ne pense pas que vous avez besoin d'un nouveau mot-clé là pour l'Accueil. Je crois que les Accessoires ne que pour vous déjà. Si quoi que ce soit d'avoir un nouveau doit être un
OriginalL'auteur Shiva Komat