I'm learning about Actors using Scala. I found this great implementation of The Santa Claus Problem here. However, this is using Scala Actors instead of Akka Actors. There is a particular part that I don't understand how to do with Akka Actors, starting at line 80:
/*(line 80)*/object Secretary extends Actor{
def act = loop(Group[Elf](3), Group[Reindeer](9))
private def addToGroup[T <% Helper](helper: T, group: Group[T]) = {
val updatedGroup = group.copy(helpers = helper :: group.helpers)
if(updatedGroup.hasSpace) updatedGroup else {
Santa ! updatedGroup
group.copy(helpers = List[T]())
}
}
// How to implement this using 'receive' with akka
private def loop(elves: Group[Elf], reindeers: Group[Reindeer]):Unit = {
react {
case Idle(reindeer: Reindeer) => loop(elves, addToGroup(reindeer, reindeers))
case Idle(elf: Elf) => loop(addToGroup(elf, elves), reindeers)
}
}
}
I'm using this guide to migrate it to Akka Actors, and I understand that the act method should be replaced with receive. But I don't understand how to do the same loop using receive. An explanation or a sample code would be helpful