1
Я хочу объявить глобальную переменную, когда актер получит какое-то сообщение, вот мой код, он работает. В: Могу ли я достичь этого с неизменяемой переменной?Scala akka: объявить глобальную переменную в функции приема
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()
}
Спасибо за ваш aswer. Но как использовать confMap в другой функции? Я не знаю, какая функция будет использовать confMap, что является основной причиной, по которой я объявляю глобальную переменную. –
Если вы используете глобальные переменные, он создает побочный эффект. Трудно или иногда невозможно проверить свои функции изолированно. Итак, я думаю, что все ваши функции должны принимать 'confMap' в качестве параметра, или вы можете создать класс, который будет принимать конфиги в качестве параметра и иметь все необходимые вам методы и использовать его в параметре' receive'. –
Я понял. спасибо –