Scala参与者消息传递:乒乓球示例
我对Scala和演员都是新手。所以,我有点困惑。我处理的第一个任务是乒乓球示例。 代码如下所示Scala参与者消息传递:乒乓球示例,scala,messaging,actor,Scala,Messaging,Actor,我对Scala和演员都是新手。所以,我有点困惑。我处理的第一个任务是乒乓球示例。 代码如下所示 class PingPong(sendTo: Actor, val name: String) extends Actor { def act { loop { receive { case x:Int => println(name + " received " + x) Thread.sleep(500)
class PingPong(sendTo: Actor, val name: String) extends Actor {
def act {
loop {
receive {
case x:Int =>
println(name + " received " + x)
Thread.sleep(500)
if (sendTo == null)
sender ! (x+1)
else
sendTo ! (x+1)
}
}
}
}
object PingPongMain extends App {
val pong = new PingPong(null, "pong")
val ping = new PingPong(pong, "ping")
ping.start()
pong.start()
ping ! 0
}
输出为
平收到0
pong收到1份
那么,它是如何评估的呢?
到目前为止,我知道。启动呼叫法案。
之后会发生什么?
发出砰的声响!0被调用。这是否意味着0被发送到实例化ping的地址?那它叫act吗?如果有不止一种方法呢?
但是pong是怎么被叫来的呢?我是说它怎么知道sendTo在哪
还有,有没有可能用类似于
val ping/pong=actor{}而不是使用extensed actor
你应该传给演员而不是演员。从ActorSystem中解析的
每个参与者只需要定义def receive=。。。所以,把这个动作去掉,然后绕着它转一圈
没有必要启动演员。当您从ActorSystem获取actorRef时,它将自动发生。
扩展演员的特质。我从来没有见过用另一种方式。
Scala Actors不受欢迎,请使用Akka Actors。但您能否解释一下,上面的代码是如何工作的?正如@Ryan所说,这些是Scala Actors吗?Akka现在是Scala的官方参与者框架。