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

我对Scala非常陌生,一直在摆弄一个演员。我曾经写过一篇文章,我希望它能永远不停地来回发送信息。但是当我运行它时,
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)。