你好,我是斯卡拉新手,我無法弄清楚如何在第二個演員中存儲演員參考,以便稍後發送消息。在我的代碼中,我嘗試向一個演員發送測試消息。當它收到這條消息時,它應該將引用(OutputChannel)存儲到第二個參與者,並在稍後時間能夠向第二個參與者發送消息。我不想使用reply(),因爲只有當我調用響應時才需要發送消息。這是代碼。謝謝你的幫助!我該如何存儲一個scala actor參考?
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
}
}
這完全符合我所遇到的問題。非常感謝Vasil! – spydadome 2011-02-10 23:06:14