Open In App

How to define type disjunction (union types) in Scala?

Last Updated : 08 Apr, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

The Scala 3 operator | may be used to create union types, or type disjunction, in Scala. Union types are a type that can store values of many different kinds. In Scala, you may define union types as follows:

1. Employing the “|” Operator:

Union types, which Scala 3 introduced, let you construct a type that is a disjunction of many types by employing the | operator.

Scala
val variable: Type1 | Type2 | Type3 = ... // variable can hold values of Type1, Type2, or Type3

Example:

Here’s an example illustrating the usage of union types:

Scala
sealed trait MyUnionType
case class TypeA(value: Int) extends MyUnionType
case class TypeB(value: String) extends MyUnionType

def processUnionType(unionType: MyUnionType): Unit = unionType match {
  case a: TypeA => println(s"This is TypeA with value: ${a.value}")
  case b: TypeB => println(s"This is TypeB with value: ${b.value}")
}

val unionType1: MyUnionType = TypeA(10)
val unionType2: MyUnionType = TypeB("Hello")

processUnionType(unionType1) // Output: This is TypeA with value: 10
processUnionType(unionType2) // Output: This is TypeB with value: Hello

Output:

Screenshot_368_1_optimized


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads