Scala Language Estrattori a tupla


Esempio

x e y sono estratti dalla tupla:

val (x, y) = (1337, 42)
// x: Int = 1337
// y: Int = 42

Per ignorare un valore, utilizzare _ :

val (_, y: Int) = (1337, 42)
// y: Int = 42

Per decomprimere un estrattore:

val myTuple = (1337, 42)
myTuple._1  // res0: Int = 1337
myTuple._2  // res1: Int = 42

Nota che le tuple hanno una lunghezza massima di 22, e quindi ._1 da ._22 a ._22 (supponendo che la tupla abbia almeno quella dimensione).

Gli estrattori di tupla possono essere usati per fornire argomenti simbolici per le funzioni letterali:

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"
    })
}