SKB – Scala case class copy


This article is part of the Scala knowledge bits Series.

Periodically, I will publish new exercises so you can slowly build up knowledge about Scala.

It is designed to be done in a very short amount of time and learn a little bit each day, just to create a routine.

This episode will teach you about Scala case class copy.

Hope you are going to enjoy it! It is designed for anyone to learn Scala from scratch and slowly learn, one Bit at a time.

After this Bit, I would love to hear your feedback in the comments down below.

Feel free to join the Discord server as well if you would like some help and support from the rest of our community.

What are we learning today?

Today we are going to learn about Scala case class copy !

We learned about case class in previous SKBs, but we haven’t seen the full spectrum of features that this special structure offers.

One of the use case for this structure is to represent a row in a database. In some other languages, case class are even called Record.

We are now going to learn how to modify the values of the column of this record.

Time to try on the exercise on your own and scroll down for more information when you are done or if you are stuck.


Here is an exercise to complete today.

If I did my job well, you should be able to guess by yourself the solution based on what you previously learned and based on the clues.

But if you get stuck, scroll down to get more information.

The goal of the exercise is to replace the ??? by a piece of code so that the exercise compiles and that’s how you win! Good luck!

You can fill the exercise right in here:

Or, if it does not load, go on to Scastie (zJFFFqP7S5Gym4PZzKLVXA).

More information about Scala case class copy

In this exercise you will learn (or have learned, if you have already solved the puzzle) about Scala case class copy.

Introducing copy !

copy is this generated method that all case class have. It allows to make a copy of the case class instance while modifying zero, one, more or all the fields that the case class has.

Remember than in functional programming and in Scala, we want to only work with immutable entities. It would be very tedious to have to manually recreate the case class, which could have dozens of fields, when all we want is, for instance, to modify the last updated date. The is the reason for the method, copy.

But how does this magic mathod works !

Well, look at the method in the example called updateContent. You can see that the arguments have default values set for them. The trick is to use the current value of the fields of the case class as default value and voila!

Look at how it is used lower in the exercise, you can omit some of the arguments of the method, which means it will use the default value. This allow us to modify only the part we want and keep the rest the same.

Feel free to go back to the exercise, modify the code to try out new things and get a better intuition for Scala case class copy.


I hope you have learned something new or had fun during this Scala Knowledge Bit.

Please ask questions or post feedback in the comments below.

Feel free to try on the next Scala Knowledege Bit.

If you are curious about the previous Scala knowledge Bits, go check it out! 🙂

Leave a Reply