Merhaba Scala'da yeniyim ve daha sonra bir mesaj göndermek için bir aktör referansını ikinci bir oyuncuda nasıl saklayabileceğimi çözemedim. Kodumda bir oyuncuya test mesajı göndermeyi deniyorum. Bu mesajı aldığında, referansı (OutputChannel) ikinci aktöre kaydetmeli ve daha sonra ikinci aktöre bir mesaj gönderebilmelidir. Yanıtı çağırdığımda gönderilecek mesaja ihtiyacım olduğu için, cevabı() kullanmak istemedim. İşte kod. Herhangi bir yardım için teşekkürler!Bir scala oyuncusu referansını nasıl kaydedebilirim?
import scala.actors.Actor
import scala.actors.Actor._
import scala.collection.mutable.ArrayBuffer
import scala.actors.OutputChannel
object testactors {
case object TestMessage
case object Respond
class TestActor(name: String) extends Actor {
private var source : ArrayBuffer[OutputChannel[Any]] = new ArrayBuffer
def act() {
loop {
react{
case TestMessage =>
println("i received a TestMessage " + name)
source += sender
case Respond =>
println("i received a ResponseMessage " + name)
}
}
}
def sendMessage(dest: Actor) = dest ! TestMessage
def respond = {
println("responding... " + name)
source(0) ! Respond
}
}
def main(args: Array[String]) {
val actor1 = new TestActor("one")
actor1.start
val actor2 = new TestActor("two")
actor2.start
actor1.sendMessage(actor2)
Thread.sleep(5000)
actor2.respond
}
}
bu, sahip olduğum problemle mükemmel şekilde uyuyor. çok teşekkürler Vasil! – spydadome
@spydadome, bir şey değil :) –