Scala case class update value
Define the case class so that the second member is a var
:
case class Stuff(name: String, var value: Option[String])
Now you can create an instance of Stuff
and modify the second value:
val s = Stuff("bashan", None)
s.value = Some("hello")
However, making case classes mutable is probably not a good idea. You should prefer working with immutable data structures. Instead of creating a mutable case class, make it immutable, and use the copy
method to create a new instance with modified values. For example:
// 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"))
Let's say your case class looks like this:
case class Data(str1: String, str2: Option[String]
First you create an instance setting the second string to None
:
val d1 = Data("hello", None)
And now you create a new value by copying this object into a new one and replace the value for str2:
val d2 = d1.copy(str2=Some("I finally have a value here"))
I would also consider the possibility that your case class is not the best representation of your data. Perhaps you need one class DataWithStr2
that extends Data
, and that adds another string that is always set. Or perhaps you should have two unrelated case classes, one with one string, and another with two.