0

私は役者という概念に比較的慣れていないので、自分がしていることについて批評をしてもらえないかと思っていました。プロジェクトの一部として、リスニング アクターのコレクションに時間を伝えるアクターが必要です。リスニング アクターは、このアクターに追加できる必要があります。

現在、私はこれを持っています:

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
  }
}

このコードから状態 (変数アクター) を削除して、より機能的にする方法はありますか?

4

2 に答える 2

7

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)
  }
}
于 2013-06-20T08:12:44.140 に答える