《scala程序設計》筆記

第一章最後對於akka的actor操作


由於所有的消息都是異步發送的所以每次運行的結果都不一樣,自己可以對結果進行分析

代碼如下:

/**
  * Created by DreamBoy on 2017/5/11.
  */
trait PeoplePleaser{
  def makePeopleHappy = println("People like me")
}
abstract class Plant{
  def photossynthesis = println("oh the sunlight!")
}
class Rose extends Plant with PeoplePleaser{
  def smell = println("good!")
}
object Messages{
  object Exit
  object  Finished
  case class Response(message:String)
}

class ShaperDrawActor extends Actor{
  import Messages._
  override def receive: Receive = {
    case s:PeoplePleaser=>{ println("PeoplePleaser")}
      sender!Response(s"PeoplePleaser:$s drawn")
    case s:Plant =>{println("Plant")}
    case Exit =>{println("-exit----")}
      sender!Finished
    case unexpected =>{ println("unexpected")}
      val responce = Response(s"error unknown message:$unexpected")
      sender!responce
  }
}
object ShapesDrawingDriver {

  def main(args: Array[String]): Unit = {
    val system = ActorSystem("DrawingActorSystem",ConfigFactory.load())
    val drawer = system.actorOf( Props(new ShaperDrawActor),"drawingActor")
    val driver = system.actorOf(Props(new ShapesDrawingDriver(drawer)),"drawingService")
    driver!Start
  }
}

class ShapesDrawingDriver(drawActor:ActorRef) extends Actor{
  override def receive: Receive = {
case Start =>
      drawActor!print("11111111")
      drawActor!println("222222222")
      drawActor!Exit
    case Finished =>
      drawActor!println("finished")
  case unexpected =>
      println(s"$unexpected")
  }
}
根據顏色分辨處理對應的步驟和結果吧


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章