Each one of us has a name. Let's keep this simple—a first and last name. My first name is Atul and my last name is Khot. If someone suddenly called me by the name Prakash, things won't work!
Keeping aside cases such as writers taking a pen name (that is, Plum for PG Wodehouse), commonly each one of us has a standard, official name. We simply don't want parts of it changed to willy nilly. Let's try the following example:
scala> case class FullName(firstName: String, lastName: String) defined class FullName scala> val name = FullName("Bertie", "Wooster") name: FullName = FullName(Bertie,Wooster) scala> name.firstName = "Mrs. Bertie" <console>:13: error: reassignment to val name.firstName = "Albert"
Scala stopped us changing the code of ...