Scala:将消息发送回发送者的简单参与者
我对Scala非常陌生,一直在摆弄一个演员。我曾经写过一篇文章,我希望它能永远不停地来回发送信息。但是当我运行它时,Scala:将消息发送回发送者的简单参与者,scala,actor,Scala,Actor,我对Scala非常陌生,一直在摆弄一个演员。我曾经写过一篇文章,我希望它能永远不停地来回发送信息。但是当我运行它时,person1发送一条消息,该消息被person2成功接收,但person1从未收到该消息。(我只收到一个“发送”和一个“回复”。)我肯定我只是误解了一些简单的事情 import scala.actors.Actor import scala.actors.Actor._ case object Hello class Person() extends Actor { de
person1
发送一条消息,该消息被person2
成功接收,但person1
从未收到该消息。(我只收到一个“发送”和一个“回复”。)我肯定我只是误解了一些简单的事情
import scala.actors.Actor
import scala.actors.Actor._
case object Hello
class Person() extends Actor {
def talk(p:Person) {
Console.println("Sending")
p ! Hello
}
def act() {
loop {
react {
case Hello => {
Console.println("Responding")
// This doesn't actually send a message back to the sender.
sender ! Hello
}
}
}
}
}
object pingpong extends Application {
val person1 = new Person
val person2 = new Person
person1.start
person2.start
person1.talk(person2)
}
有什么想法吗
编辑:这是通过将发件人作为邮件的一部分显式传递,而不是使用sender
方法:
class Person() extends Actor {
def talk(p:Person) {
Console.println("Sending")
p ! (Hello, this)
}
def act() {
loop {
react {
case (Hello, theSender:Actor) => {
Console.println("Responding")
theSender ! (Hello, this)
}
}
}
}
}
问题是我不应该像以前那样使用
sender
,还是发生了其他事情?可以使用sender
向发件人发送消息吗?在进一步讨论此问题之前,我应该告诉您Scala actors已被弃用,您应该使用Akka actors(现在是标准的Scala actors)。