Я получаю эту ошибку при компиляции:Неожиданная ошибка: Перераспределение ВАЛ
Compilation error: reassignment to val
Я думаю, что это кажется очевидным, но при взгляде на моем коде я не могу найти, почему это не работает.
Вот пример кода, где происходит ошибка, из моего ConferenceController.scala:
def createConfWithPrivacy(confId: Long, groupId: Option[Long]) = ForcedAuthentication
{implicit request =>
Future {
val user = request.user.get
var newConf = Conference.findById(confId).get
if(groupId.isDefined){
newConf.forGroup = LabGroup.findById(groupId.get) <- there it is
Conference.updateForGroup(newConf)
}
...
}
}
Переменные в Conference.scala объявлены как следующие:
case class Conference (
id : Long,
title : String,
abstr : String,
speaker : Speaker,
startDate : DateTime,
length : Duration,
organizedBy: Lab,
location : Location,
accepted : Boolean,
acceptCode : Option[String],
priv : Boolean,
forGroup : Option[LabGroup]=None
) {... Functions ...}
функции называют это из файла LabGroup.scala, я знаю, что это работает:
def findById(id: Long): Option[LabGroup] = DB.withConnection { implicit c =>
SQL("SELECT * FROM LabGroup WHERE id = {id}")
.on("id" -> id)
.as(labGroupParser.singleOpt)
}
Но я не знаю Не понимаю, почему эта ошибка возникает, потому что newConf является var, и обычно Conference.forGroup тоже должен быть одним.
Если вы видите что-то не так, сообщите мне.
Спасибо за помощь.
Вы также можете просто использовать 'copy':' newConf = newConf .copy (forGroup = LabGroup.findById (groupId.get)) '. Это, наверное, лучше и более идиоматично (но в конце концов только ОП может сказать, что лучше для него/нее). –
Это хорошо работает, спасибо. Régis ваше решение тоже приятно и выполняет эту работу, я возьму его, чтобы конференция была как есть. – Calaom