# Enums, Part 1

## Scala 3 Enums (Enumerations): The Basics

An enum, or enumeration, is a finite set of named values, where the word “set” implies that the values are unique. Examples are:

• Days in a week (the names Sunday, Monday ... Saturday)
• Suits and ranks in a deck of cards
• Pizza toppings, crust sizes, and crust types
• Simple directions, such as north, south, east, and west

In Scala 3:

• Enums can be parameterized
• Enums can have members (fields and methods)

## Examples

In an example like this for modeling a deck of cards:

``````enum Suit:

we say:

• `Suit` is a new type that you have created (just like `String` and `Int` are built-in types)
• Values of that type are `Clubs`, `Diamonds`, `Hearts`, and `Spades`

Other simple examples:

``````enum Directions:
case North, South, East, West

enum Bool:
case True, False

enum CrustSize:
case Small, Medium, Large

enum CrustType:
case Thin, Thick, Regular

enum Topping:
case Cheese, Mushrooms, GreenPeppers, Olives``````

Given those pizza-related enums, here’s a small but complete example:

``````// import the enum values
import CrustSize.*
import CrustType.*
import Topping.*

// use them in a class
case class Pizza(
crustSize: CrustSize,
crustType: CrustType,
toppings: Seq[Topping]
)

// create and use Pizza instances
val p1 = Pizza(Small, Thin, Seq(Cheese))
val p2 = p1.copy(
toppings = p1.toppings ++ Seq(Mushrooms, Olives)
)
val p3 = p2.copy(crustSize = Large)``````