我必須編寫一個代碼,以使Actor A產生Actor B消耗的無限數量的數字流。演員A輸出序列:x,f(x),g(f(x))等,其中f(x)= 10,如果x是0,否則3x,其中g(x)是x/2。即:處理無限數量的消息(akka)
輸出:x = 0,f(x)= 10,g(f(x)= 5(3個消息),則接下來的3個消息應該是f(g(f(x)),g(f (g(f(x))),f(g(f(g(f(x))))和它們的值...其中內部函數變爲x每次計算相鄰結果的結果
在一個時間與數字3演員乙優惠和它應該打印每個三列上與平均3個數字的同一條線上。
(0)被傳遞給ActorA從主方法的值。
我的嘗試:
import akka.actor._
class ActorA(processB:ActorRef) extends Actor with ActorLogging{
def f(x : Int) = if(x == 0) 10 else 3 * x
def g(x : Int) = x/2
def receive = {
case 0 =>
val x = 0
//processB ! (x)
// processB ! (f(x))
// processB ! (g(f(x)))
println((f(x)))
println((g(f(x))))
/*case Stop =>
Console.println("Stop")
processB ! Stop
context stop self */
}
}
class ActorB extends Actor with ActorLogging{
def receive = {
case ActorA =>
case Stop =>
Console.println("Stop")
exit()
}
}
case object ActorA
case object ActorB
case object Stop
object messages {
def main(args: Array[String]) :Unit = {
val system = ActorSystem("actors")
val processB = system.actorOf(Props[ActorB])
val actorA = system.actorOf(Props(new ActorA(processB)))
actorA ! 0
}
}
如何生成無限數量的消息,我可以一次處理3個消息嗎?謝謝