Tuple (кортежи)

Scala tuple - это тип, который позволяет помещать коллекцию разных типов в один и тот же контейнер. Например, учитывая case class Person:

case class Person(name: String)

можно построить кортеж, содержащий Int, String и Person:

val t = (11, "eleven", Person("Eleven"))
// t: Tuple3[Int, String, Person] = (11, "eleven", Person(name = "Eleven"))

Доступ к значениям кортежа осуществляется через индекс (начиная с 0):

t(0)
// res0: Int = 11
t(1)
// res1: String = "eleven"
t(2)
// res2: Person = Person(name = "Eleven")

либо через методы вида ._i, где i - порядковый номер (начиная с 1, в отличие от индекса)

t._1
// res3: Int = 11
t._2
// res4: String = "eleven"
t._3
// res5: Person = Person(name = "Eleven")

Также можно использовать extractor для присвоения переменным значений полей кортежа:

val (num, str, person) = t
// num: Int = 11
// str: String = "eleven"
// person: Person = Person(name = "Eleven")

Кортежи хороши для случаев, когда необходимо поместить коллекцию разнородных типов в небольшую структуру, похожую на коллекцию.


Ссылки: