我想在Actor收到一些消息时声明一个全局变量,这是我的代码,它可以工作。问:我可以使用不可变变量来实现吗?
case class Start(configs:JobConfig)
trait Job extends Actor with ActorLogging {
//use "val" instead
private var confMap:Map[String,String]=Map()
def receive = {
case Start(conf) => {
confMap = conf.properties
init()
}
case x => log.debug("Got: " + x)
}
final def getProperties():Map[String,String]={
confMap
}
def init()
}
答案 0 :(得分:1)
当然你可以,但是如果你的init
使用confMap
它应该将地图作为参数:
...
def receive(confMap:Map[String,String] = Map()) = {
case Start(conf) =>
init(conf.properties)
context.become(receive(conf.properties))
case ...
您可以找到更多信息here