Scala case classes
A case
class is a simplified type that can be used without calling new Classname(..)
. For example, we could have this script that defines a case
class and uses it:
case class Car(brand: String, model: String) val buickLeSabre = Car("Buick", "LeSabre")
So, we have a case
class called Car
. We make an instance of that class called buickLeSabre
.
The case
classes are most useful for pattern matching, since we can easily construct complex objects and examine their content. For example:
def carType(car: Car) = car match { case Car("Honda", "Accord") => "sedan" case Car("GM", "Denali") => "suv" case Car("Mercedes", "300") => "luxury" case Car("Buick", "LeSabre") => "sedan" case _ => "Car: is of unknown type" } val typeOfBuick = carType(buickLeSabre)
We define a pattern match
block (as in the previous section of this chapter). In the match
block, we look at a Car
object that has brand
as GM
and model
as Denali
, and so forth. For each of the models...