class MutableStateActor extends Actor {
var state = ...
override def preStart() = {
//you can also use for yield/await.result here, it's fine...
state = ...
}
override def receive = {
case ... => updateState(newState)
//This is safe.The actor subsequent processing rule
case SetState(newState) => state = newState
}
def updateState(newState: State) = {
self ! SetState(newState)
}
}