x and y are extracted from the tuple:
val (x, y) = (1337, 42) // x: Int = 1337 // y: Int = 42
To ignore a value use _:
val (_, y: Int) = (1337, 42) // y: Int = 42
To unpack an extractor:
val myTuple = (1337, 42) myTuple._1 // res0: Int = 1337 myTuple._2 // res1: Int = 42
Note that tuples have a maximum length of 22, and thus ._1 through ._22 will work (assuming the tuple is at least that size).
Tuple extractors may be used to provide symbolic arguments for literal functions:
val persons = List("A." -> "Lovelace", "G." -> "Hopper")
val names = List("Lovelace, A.", "Hopper, G.")
assert {
names ==
(persons map { name =>
s"${name._2}, ${name._1}"
})
}
assert {
names ==
(persons map { case (given, surname) =>
s"$surname, $given"
})
}