Home »
Scala
Case objects vs Enumerations in Scala
By IncludeHelp Last updated : November 07, 2024
Case Objects
Case objects in Scala are instances of case class which is a regular class with an added pattern matching feature.
Syntax
caseObjName = caseClassName(parameter_values)
Program to illustrate the creation of case objects
// Program to illustrate the creation of case objects in Scala
// Creating a Case Class
case class student(name: String, standard: Int, marks: Int, result: String )
object myObject {
def main(args: Array[String]) {
// Creating a case Object
val student1 = student("Prem", 10, 89, "A+")
println("Case Object: " + student1)
}
}
Output:
Case Object: student(Prem,10,89,A+)
Enumeration
Enumeration is a feature in Scala used to define a group of constants.
Syntax
object enum_object extends Enumeration {
type enum_object = value
/// Assigning value
val name1 = Value("value")
}
Program to illustrate creation of Enumeration
// Program to illustrate the creation of Enum in Scala...
object Main extends Enumeration {
type Main = Value
val day1 = Value("Sunday")
val day2 = Value("Monday")
val day3 = Value("Tuesday")
val day4 = Value("Wednesday")
val day5 = Value("Thursday")
val day6 = Value("Friday")
val day7 = Value("Saturday")
def main(args: Array[String]) {
println("Value of Enum : " + Main.values )
}
}
Output:
Value of Enum : Main.ValueSet(Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday)
Difference between Case objects and Enumerations
Here's a difference table comparing Case Objects and Enumerations in Scala:
Feature |
Case Objects |
Enumerations |
Pattern Matching Flexibility |
More flexible for pattern matching |
Limited flexibility |
Instance Iteration |
Supports iterating over all instances |
Does not support iterating over all instances |
Overheads |
Requires additional case class overheads |
Minimal overhead, just a set of constants |
Value Mutability |
Values can be extended and manipulated if needed |
All values are constant once defined |
Methods Provided |
Flexible with additional methods |
Limited predefined methods |