私は 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" と "さようなら!" の出力です。コードの何が問題なのかわかりません。これを試す前に、何人かの作業中のアクターがいて、同じパターンを使用しました。ここで何が間違っていますか?
ありがとう。