Hello Actor

とりあえず書いてみた。

package actor

import scala.actors._
import scala.actors.Actor._

object HelloActor {
  private val foo = actor {
    println(">>foo actor")
    loop {
      println(">> foo loop")
      receive {
        case ('hello, msg) => 
          println("Hello "+msg)
        case ('goodbye, msg) => 
          println("Goodbye "+msg)
          exit
      }
      println("<< foo loop")
    }
    println("<<foo actor")
  }
  
  def main(args: Array[String]): Unit = {
    foo ! ('hello, "hoge")
    foo ! ('unknown, "hoge")
    foo ! ('goodbye, "hoge")
  }
}

'unknown メッセージを送りつけても、無視されるだけですむ。PartialFunction ならでは。
Actor の動作をとめるには、Actor 内から exit を呼ぶ必要があるみたいです。外から止める方法は無いんだろうか・・・?