web-dev-qa-db-fra.com

Valeur de mise à jour de la classe de cas Scala

J'ai une classe de cas avec 2 membres de chaîne. Je souhaite mettre à jour le deuxième membre plus tard. Je crée donc d'abord une instance avec String et None, puis charge les données dans la classe et souhaite mettre à jour le deuxième membre avec une valeur.

Comment puis-je le faire?

19
bashan

Définissez la classe de cas de telle sorte que le deuxième membre soit une var:

case class Stuff(name: String, var value: Option[String])

Vous pouvez maintenant créer une instance de Stuff et modifier la deuxième valeur:

val s = Stuff("bashan", None)

s.value = Some("hello")

Cependant, rendre les classes de cas mutables n'est probablement pas une bonne idée. Vous devriez préférer travailler avec des structures de données immuables. Au lieu de créer une classe de cas mutable, rendez-la immuable et utilisez la méthode copy pour créer une nouvelle instance avec des valeurs modifiées. Par exemple:

// Immutable Stuff
case class Stuff(name: String, value: Option[String])

val s1 = Stuff("bashan", None)

val s2 = s1.copy(value = Some("hello"))
// s2 is now: Stuff("bashan", Some("hello"))
47
Jesper

Les classes de cas en Scala sont de préférence immuables. Utilisez une classe standard pour ce que vous essayez d'atteindre ou copiez votre objet de classe de cas dans un nouveau avec la valeur mise à jour.

1