我正在scala中构建一个简单的日志记录类,它将所有日志信息写入文件。这是家庭作业的一部分。因此,我无法使用java或scala或akka库中已有的记录器。您能否告诉我们如何唯一标识scala中的角色,即每个角色是否有资源ID或任何其他ID。如果是这样,它如何被访问?在scala中唯一标识演员
我试着在actor对象上使用hashCode()。但是它并没有给出预期的结果,因为每个对象的值会发生变化,并且可以为单个actor创建许多对象。
我正在scala中构建一个简单的日志记录类,它将所有日志信息写入文件。这是家庭作业的一部分。因此,我无法使用java或scala或akka库中已有的记录器。您能否告诉我们如何唯一标识scala中的角色,即每个角色是否有资源ID或任何其他ID。如果是这样,它如何被访问?在scala中唯一标识演员
我试着在actor对象上使用hashCode()。但是它并没有给出预期的结果,因为每个对象的值会发生变化,并且可以为单个actor创建许多对象。
如果您使用的阿卡演员,你可以通过查看self.path(个体经营是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")
谢谢,这正是我想要的。但是,我不应该使用akka库来完成这个家庭作业。你知道同样的Scala解决方案吗? –
为什么你不能使用阿卡?他们是否明确说过你不能使用图书馆?总之为你提供了另一种解决方案。 –
你是什么意思的“价值改变为每个对象和许多对象可以为单个演员创建”? – sourcedelica
@sourcedelica任何对象的hashCode()都会返回Java中的唯一值。该值可用于唯一标识该对象。但是对于一个演员类,我们将在程序中创建多个实例。当我们在这些实例上使用hashCode()时,我们将获得每个实例的唯一值。因此我不能用这种方法来唯一标识每个演员。 –
好的 - 你的意思是确定演员的类型,而不是演员本身。因为散列码将识别演员(至少在Akka中)。你在使用Akka吗? – sourcedelica