Scala: comment initialiser un objet à l'aide des valeurs par défaut

Je pense que ce sera mieux expliqué par un exemple

J'ai le cas suivant classe

case class Person(name: String = "no name", surname: String = "no surname")

Et je veux faire une fonction générale à remplir à partir, par exemple, un message json, qui ne peut pas spécifier tous les champs

Je sais que pour utiliser les valeurs par défaut la réponse la plus simple est de ne pas passer pour le constructeur, mais si j'ai plusieurs champs qui peuvent ou peuvent ne pas apparaître dans le json, je devrait avoir à utiliser un énorme interrupteur phrase couvrant toutes les combinaisons possibles de paramètres manquants. Dans ce cas, après la lecture du json, je devrais prendre soin de nom & prénom présent, pas de nom, pas de nom de famille et pas de nom ni de prénom... (ben, j'espère que je me suis fait clair).

Pour être plus précis, je suis en train de développer une fonction qui me permet de créer une personne de la followgin json valeurs, en utilisant les valeurs par défaut lorsqu'il y a un certain nombre de paramètres manquants

{ "name": "john", "surname": "doe" }
{ "surname": "doe" }
{ "name": "john" }
{ }

C'est pourquoi je suis à la recherche d'une façon plus générale pour gérer cela.

(Je vais vous montrer quelques pseudo-code pour donner une idée de ce que je suis en train de réaliser)

Je pensais à quelque chose comme:

val p = Person(name= "new person name", surname= Unit)

Et dans ce cas, le prénom doit obtenir la valeur par défaut

Ou quelque chose comme

val p = Person( Map( "name" -> "new person name" ) _* )

De sorte qu'il prend également la valeur par défaut pour le nom de famille

Ou peut-être de le faire dans le constructeur, si je détecte une valeur null (ou sans), j'ai pu affecter la valeur par défaut.

En fait, j'essaie d'éviter de répéter la définition des valeurs par défaut.

De toute façon, ce qui serait le plus idiomatique façon à atteindre une telle chose?

OriginalL'auteur opensas | 2012-05-06