设为首页 加入收藏

TOP

Akka(7): FSM:通过状态变化来转换运算行为(六)
2017-10-09 14:06:32 】 浏览:4157
Tags:Akka FSM 通过 状态 变化 转换 运算 行为
ks + 1 log.info(s"It's ${stateName.toString}, it's no so bad. You've asked me ${numtalks} times.") stay using SeasonInfo(numtalks,mnth) } when(Winter) { //冬季状态 case Event(HowYouFeel,si@ SeasonInfo(tks,_)) => val numtalks = tks + 1 log.info(s"It's ${stateName.toString}, it's freezing cold! You've asked me ${numtalks} times.") stay using si.copy(talks = numtalks) } whenUnhandled { //所有状态未处理的Event case Event(NextMonth,seasonInfo) => val mth = seasonInfo.month if (mth <= 3) { log.info(s"It's month ${mth+1} of ${stateName.toString}") stay using seasonInfo.copy(month = mth + 1) } else { goto(nextSeason(stateName)) using SeasonInfo(0,1) } } onTransition { case Spring -> Summer => log.info(s"Season changed from Spring to Summer month ${nextStateData.month}") case Summer -> Fall => log.info(s"Season changed from Summer to Fall month ${nextStateData.month}") case Fall -> Winter => log.info(s"Season changed from Fall to Winter month ${nextStateData.month}") case Winter -> Spring => log.info(s"Season changed from Winter to Spring month ${nextStateData.month}") } initialize() //设定起始状态 log.info(s"It's month 1 of ${stateName.toString}") //季节转换顺序 def nextSeason(season: Seasons): Seasons = season match { case Spring => Summer case Summer => Fall case Fall => Winter case Winter => Spring } } object FSMDemo extends App { import scala.util.Random val fsmSystem = ActorSystem("fsmSystem") val fsmActor = fsmSystem.actorOf(FillSeasons.props,"fsmActor") (1 to 15).foreach { _ => (1 to Random.nextInt(3)).foreach{ _ => fsmActor ! FillSeasons.HowYouFeel } fsmActor ! FillSeasons.NextMonth } scala.io.StdIn.readLine() fsmSystem.terminate() }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

首页 上一页 3 4 5 6 下一页 尾页 6/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Akka(6): become/unbecome:运.. 下一篇spark获取时间

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目