Category : Scala | Sub Category : Scala Interview Questions | By Prasad Bonam Last updated: 2023-09-27 04:52:21 Viewed : 275
In Scala, the case
keyword is used in various contexts, and it plays a crucial role in several language features. Here are some of the most common uses of the case
keyword in Scala:
Pattern Matching: One of the primary uses of the case
keyword is in pattern matching. Pattern matching allows you to match data structures against specific patterns and execute code based on those patterns. Case classes and case objects are often used in conjunction with pattern matching to define the patterns.
scalaval result = value match { case 0 => "Zero" case 1 => "One" case _ => "Other" }
In this example, the case
keyword is used to define the patterns for different values of value
.
Case Classes: Case classes are a special type of class in Scala that is used for modeling data. They are often used in conjunction with pattern matching and provide various features such as automatic generation of methods for pattern matching, equality comparison, and more.
scalacase class Person(name: String, age: Int) val person = Person("Alice", 30)
In this case, case
is used to define the Person
case class.
Case Objects: Similar to case classes, case objects are used to define singleton objects that can also be used in pattern matching. They are often used to represent enumerations or singletons.
scalacase object Red extends Color
In this case, case
is used to define the Red
case object.
Case Blocks in Partial Functions: When defining partial functions, you can use case
blocks to specify patterns and actions for specific inputs.
scalaval pf: PartialFunction[Int, String] = { case 0 => "Zero" case 1 => "One" }
Here, case
blocks are used to specify patterns for the partial function pf
.
Case Statements in For Comprehensions: In for comprehensions, you can use case
statements to destructure and pattern match values extracted from collections.
scalafor { (name, age) <- List(("Alice", 30), ("Bob", 25)) } yield s"$name is $age years old"
The (name, age)
is a case statement used to destructure the tuple elements.
In summary, the case
keyword in Scala is versatile and is used in various contexts, primarily related to pattern matching, defining case classes and case objects, and working with partial functions and for comprehensions. It simplifies code readability and conciseness when dealing with complex data structures and patterns.