Site icon DataFlair

Scala Case Class – How to Create Scala Object

Scala Case Class

Scala Case Class and Scala Objects

Free Scala course with real-time projects Start Now!!

In this Scala tutorial, we will see how to define a Scala case class. Moreover, we will also take a look at how to compare case classes and create shallow copies. Along with this, we will also learn how to create a Scala object.

So, let’s explore Scala Case Class and Scala Object.

Read Scala Syntax: An Introductory Scala Tutorial

What is Scala Case Class?

A Scala Case Class is like a regular class, except it is good for modeling immutable data. It also serves useful in pattern matching, such a class has a default apply() method which handles object construction. A scala case class also has all vals, which means they are immutable.
Let’s Revise Scala Syntax with example.

Defining a Minimal Case Class in Scala

To define a minimal Scala Case Class, we need the keywords ‘case class’, an identifier, and a parameter list. We can keep the parameter list empty.
So, let’s define a class ‘Song’.

scala> case class Song(title:String,artist:String,track:Int)

Creating a Scala Object

And now, it’s time to create a Scala Object for this Scala class.

scala> val stay=Song("Stay","Inna",4)
stay: Song = Song(Stay,Inna,4)

To create a Scala Object of a case class, we don’t use the keyword ‘new’. This is because its default apply() method handles the creation of objects.
Let’s try accessing the title of this object:

scala> stay.title
res1: String = Stay
And now, let’s try modifying it.
scala> stay.title="Me Gusta"
<console>:12: error: reassignment to val
      stay.title="Me Gusta"
                ^

Failed.
Explore Scala Closures with Examples | See What is Behind the Magic
So, this tells us that Scala case classes hold all vals, and this makes them immutable. We cannot reassign them. And while it is discouraged to do so, we can use vars in a case class.

Comparing two Case Classes

Now, let’s take a look at how to compare two Scala case classes. 

scala> val crybaby=Song("Cry Baby","Melanie Martinez",7)
crybaby: Song = Song(Cry Baby,Melanie Martinez,7)
scala> val cry_baby=Song("Cry Baby","Melanie Martinez",7)
cry_baby: Song = Song(Cry Baby,Melanie Martinez,7)
They hold the same contents, but are they the same? Let’s ask Scala.
scala> crybaby==cry_baby
res2: Boolean = true
Yes. Yes, they are.

Shallow-Copying a Scala Case Class

Technology is evolving rapidly!
Stay updated with DataFlair on WhatsApp!!

Since a Scala case class is immutable, we might sometimes need a copy to make changes in without changing the original. So, we now see how to create a shallow copy of it. But before that, let’s see a little about shallow and deep copies.

A deep copy is a copy to another object where any changes we make to it don’t reflect in the original object.

Scala Case class- Deep copy

A shallow copy, however, is one where changes to the copy do reflect in the original.

Scala Case class- Shallow copy

So, Scala uses the method copy() to carry out a shallow copy.

scala> val chandelier1=chandelier.copy()
chandelier1: Song = Song(Chandelier,Sia Furler,3)

It is also possible to change the constructor arguments.

scala> val chandelier2=chandelier.copy(title=chandelier.artist,artist="Sia")
chandelier2: Song = Song(Sia Furler,Sia,3)

So, this was all about Scala Case Class and Scala Object. Hope you like our explanation.

Conclusion: Scala Case Class and Scala object

So, this is how we define a case class and process it. Hence, we saw Scala Case Class. Moreover, we discussed Creating a Scala object. Also, we compared two Scala Case Classes. Finally, we looked at shallow copying a Scala Case Class. Furthermore, feel free to leave your doubts and suggestions in the comment section.
For reference

Exit mobile version