我对演员的想法比较陌生,并且想知道我是否可以对我正在做的事情进行一些批评.对于项目的一部分,我需要有一个演员,告诉听众演员的时间.必须能够将倾听演员添加到此演员.
目前我有这个:
import akka.actor.Actor;
import akka.actor.ActorRef;
import com.github.nscala_time.time.Imports._;
class TimeManager extends Actor {
var actors:List[ActorRef] = List();
def receive = {
case AdvanceTime() => actors foreach (_ ! DateTime.now)
case AddListener(x) => actors = x :: actors
}
}
Run Code Online (Sandbox Code Playgroud)
有没有什么办法可以从这段代码中删除状态(var actors)以使其更具功能性?
你不能删除州,因为TimeManager应该包含演员列表.
你可以隐藏它:
class TimeManager extends Actor {
def receive = getBehavior(Nil)
def getBehavior(actors: List[ActorRef]): Receive = {
case AdvanceTime() => actors foreach (_ ! DateTime.now)
case AddListener(x) => context become getBehavior(x :: actors)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
668 次 |
| 最近记录: |