3

私は、すべてのログ情報をファイルに書き込む単純なロギングクラスをscalaで構築しています。これは宿題の一部です。したがって、java、scala、またはakkaライブラリですでに利用可能なロガーを使用することはできません。Scalaでアクターを一意に識別する方法を教えてください。つまり、各アクターのリソースIDまたはその他のIDがありますか。もしそうなら、どのようにアクセスできますか?

アクターオブジェクトでhashCode()を使用してみました。ただし、オブジェクトごとに値が変化し、1人のアクターに対して多くのオブジェクトを作成できるため、期待した結果は得られません。

4

1 に答える 1

5

akka アクターを使用している場合は、self.path (self は ActorRef) を見ることでアクターの名前を取得できます。

http://doc.akka.io/api/akka/2.0.4/#akka.actor.ActorPath

編集:

スカラアクターを使用している場合は、次のようなことができます...

class MyActor(name: String) extends Actor { 
  def act() {
    receive {
      case _ => println("Message on actor: " + name)
    }
  } 
}
val actor1 = new MyActor("actor1")
val actor2 = new MyActor("actor2")
于 2012-11-15T06:59:23.030 に答える