A tuple in Scala is an immutable sequence of values of multiple types.

(x, y) is known as a pair in Scala.
A Pair is a Tuple of size 2.

Creating a tuple

Most common way . e.g (“ABC”, 42)
Using -> operator. eg. “ABC” -> 42, creates a tuple (“ABC”, 42)


A Tuple Type (T1, …, Tn) is abbreviation of the parameterized type scala.Tuple(n)[T1,…Tn].

A Tuple expression (e1, …, en) is equivalent to the function application scala.Tuple(n)(e1,…en).

A Tuple Pattern (p1, …, pn) is equivalent to the constructor pattern scala.Tuple(n)(p1,…pn)


A tuple isn’t actually a collection; it’s a series of classes named Tuple2, Tuple3, etc., through Tuple22. e.g Tuple2 is modeled as

case class Tuple2[T1, T2](_1: T1, _2: T2) { 
  override def toString = "(" + _1 + "," + _2 + ")" 


Accessing elements of a Pair/Tuple2


 val pair: (String, Int) = ("ABC", 42)

By _n

val name:String = pair._1 
val age: Int = pair._2

Pattern Matching/ Extractor

val (name:String, age:Int) = pair


Pattern Matching in Pair/Tuples

(x, y) match { 
  case ("ABC", _) => println("ABC is found") 
  case (_, age) if age > 30 => println("age is greater than 30") 
  case (x:String, y:Int) => println (s"$x , $y") 
  case _ => println("Invalid scenario")

Iterating over a Scala tuple

Although, a tuple is not a collection, but you can still iterate over its elements (just like a collection) using its productIterator method.

val test = ("Demo", 100.5, 76)