der folgende Code Gegeben:Scala Akteure Ausnahme "reagiert auf Kanal zu anderem Akteure gehör"
class A extends Actor {
def act() {
loop {
reactWithin(1000) {
case _ => println("A Message")
}
}
}
}
und
class B extends A {
val test = Actor.actor {
loop {
reactWithin(1000) {
case "B" => println("B Message")
}
}
}
}
eine Instanz von B Erstellen val t = new B()
führen die folgende Ausnahme:
[email protected]: caught java.lang.AssertionError: assertion failed: react on channel belonging to other actor
java.lang.AssertionError: assertion failed: react on channel belonging to other actor
at scala.actors.ReplyReactor$class.reactWithin(ReplyReactor.scala:123)
at A.scala$actors$Actor$$super$reactWithin(Tester.scala:11)
at scala.actors.Actor$class.reactWithin(Actor.scala:613)
at A.reactWithin(Tester.scala:11)
at B$$anonfun$1$$anonfun$apply$mcV$sp$1.apply(Tester.scala:24)
at B$$anonfun$1$$anonfun$apply$mcV$sp$1.apply(Tester.scala:24)
at scala.actors.Reactor$class.seq(Reactor.scala:280)
at A.seq(Tester.scala:11)
at scala.actors.Reactor$$anon$3.andThen(Reactor.scala:258)
at scala.actors.Combinators$class.loop(Combinators.scala:26)
at A.loop(Tester.scala:11)
at B$$anonfun$1.apply$mcV$sp(Tester.scala:23)
at scala.actors.Actor$$anon$1.act(Actor.scala:135)
at scala.actors.Reactor$$anonfun$dostart$1.apply(Reactor.scala:222)
at scala.actors.Reactor$$anonfun$dostart$1.apply(Reactor.scala:222)
at scala.actors.ReactorTask.run(ReactorTask.scala:36)
at scala.concurrent.forkjoin.ForkJoinPool$AdaptedRunnable.exec(ForkJoinPool.java:611)
at scala.concurrent.forkjoin.ForkJoinTask.quietlyExec(ForkJoinTask.java:422)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.mainLoop(ForkJoinWorkerThread.java:340)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:325)
Könnte jemand bitte mich erleuchten, warum das ist? :)
Richtig, ich glaube ich werde verrückt. Dies scheitert mit dem gleichen Fehler: Klasse C Schauspieler { def act() { val test = Actor.actor { reactWithin (1000) { Ausfahrt } } reactWithin (1000) { Ausfahrt erstreckt} } } val c = new C() c.start Was bin ich hier? – LeChe