Je suis nouveau à Scala, et c'est probablement une question très simple, mais j'ai du mal à comprendre comment faire un objet seulement s'il n'existe pas encore.Scala: Créer un objet seulement s'il n'existe pas encore
Je voudrais interroger une base de données, et savoir si quelque chose est présent, si c'est le cas, stockez-la dans un objet, sinon créez-en une nouvelle. En Java, je sais que ce serait quelque chose comme
PushMessage push = null;
if(GetFromDatabase() == null) {
push = new PushMessaage(param1, param2...);
}
else {
push = GetFromDatabase();
}
Mais, comment faire cela dans Scala. Lorsque j'essaie de faire la même chose, cela me dit que GetFromDatabase() n'est pas conforme au type attendu Null. De même, j'ai essayé de faire pattern matching et de faire quelque chose comme
val push = GetFromDatabase match {
case Some(pushMessage) => pushMessage
case None => new PushMessage(param1, param2...)
}
Mais cela aussi ne fonctionne pas comme il m'a dit que
Constructor ne peut pas être instancié type prévu, trouvé: Certains [A ], attendu: PushMessage
Alors, comment faire? Toute aide serait vraiment appréciée.
Pourquoi utiliser 'Option' où vous pouvez simplement faire la même chose qu'en Java? 'val m = GetFromDatabase; val push = if (m == null) {nouveau PushMessage ...} sinon m'. –
@Victor Moroz comment est-il plus simple que 'Option (GetFromDatabase) .getOrElse (nouveau PushMessage (params))'? – dk14