我正在尝试掌握 scala 演员(我正在阅读“不耐烦的 Scala”),但下面的简短示例并没有像我预期的那样工作。
我有我想发送给演员的消息的案例类:
abstract class Message
case class Sum(x: Int, y: Int) extends Message
case class Stop() extends Message
以及演员应该如何处理它们:
import scala.actors.Actor
class Adder(val idx: Int) extends Actor {
def act() {
while(true) {
receive {
case Sum(x: Int, y: Int) => println("Total: " + (x+y) + ", by " + idx)
case Stop => exit()
case _ => println("Wrong message sent to: " + idx + "!")
}
}
}
}
在主对象中,我创建了一个 Adder 实例并发送一些消息:
object Main extends App{
val adder = new Adder(0)
println("Init")
adder ! "Rafael"
adder ! Sum(2, 3)
adder ! Sum(5, 6)
adder ! Stop()
println("goodbye!")
}
但唯一的输出是“Init”和“goodbye!”的打印。我似乎找不到代码有什么问题。在尝试这个之前,我有一些工作演员,只是使用了相同的模式。我在这里做错了什么?
谢谢。