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.