A Scala case class ‘copy’ method example

Scala FAQ: When you create a case class in Scala, a copy method is generated for your case class. What does this copy method do?

In short, it lets you make a copy of an object, where a “copy” is different than a clone, because with a copy you can change fields as desired during the copying process. The copy method is important in functional programming, where values (val) are immutable.

A `copy` example

To demonstrate this, let's create an Employee class as a case class:

scala> case class Employee(name: String, office: String, role: String)
defined class Employee

Next, we'll create an instance of an Employee named fred:

scala> val fred = Employee("Fred", "Anchorage", "Salesman")
fred: Employee = Employee(Fred,Anchorage,Salesman)

Finally, we'll call the copy method on fred to create a new employee named joe who has the same characteristics as the employee named fred, but with a different name:

scala> val joe = fred.copy(name="Joe")
joe: Employee = Employee(Joe,Anchorage,Salesman)

As you can see, joe is a copy of fred, but with a different name, which we changed during the copy process.

If you ever need to make a copy of an object in Scala, but not a clone, this gives you a little example of how the auto-generated copy method on a Scala case class works.

Add new comment

The content of this field is kept private and will not be shown publicly.

Anonymous format

  • Allowed HTML tags: <em> <strong> <cite> <code> <ul type> <ol start type> <li> <pre>
  • Lines and paragraphs break automatically.
By submitting this form, you accept the Mollom privacy policy.