Scala case classes
A case class is a simplified type that can be used without calling out new Classname(..)
. For example, we could have this script, which 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
.
Case classes are most useful for pattern matching since we can easily construct complex objects and examine their contents. Here's an 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, we look at a Car
object that has brand = GM
, model = Denali
, and so on. For each of the models of interest...