Объект scala.Tuple
объект Tuple
| Суперобъекты | |
|---|---|
| Тип самого объекта |
Типы
Исходный код@experimental
тип Append[X <: Tuple, Y] = X match { case EmptyTuple => Y *: EmptyTuple case x *: xs => x *: Append[xs, Y] }
Тип кортежа с добавленным элементом
Исходный код
Тип конкатенации двух кортежей
Исходный код
тип Drop[T <: Tuple, N <: Int] = N match { case 0 => T case S[n1] => T match { case EmptyTuple => EmptyTuple case x *: xs => Drop[xs, n1] } }
Преобразует кортеж (T1, ..., Tn) в (Ti+1, ..., Tn).
Исходный код
Тип элемента в позиции N кортежа X
Исходный код
тип Filter[Tup <: Tuple, P <: ([_] =>> Boolean)] = Tup match { case EmptyTuple => EmptyTuple case h *: t => P[h] match { case true => h *: Filter[t, P] case false => Filter[t, P] } }
Фильтрует элементы кортежа, для которых предикат P возвращает false. Предикат P[X] — это тип, который может быть true или false. Например:
type IsString[x] = x match {
case String => true
case _ => false
}
Filter[(1, "foo", 2, "bar"), IsString] =:= ("foo", "bar")
Исходный код
тип FlatMap[Tup <: Tuple, F <: ([_ <: Union[Tup]] =>> Tuple)] = Tup match { case EmptyTuple => EmptyTuple case h *: t => Concat[F[h], FlatMap[t, F]] }
Преобразует кортеж (T1, ..., Tn) в сплюснутый (..F[T1], ..., ..F[Tn])
Исходный код
тип Fold[Tup <: Tuple, Z, F[_, _]] = Tup match { case EmptyTuple => Z case h *: t => F[h, Fold[t, Z, F]] }
Сворачивает кортеж (T1, ..., Tn) в F[T1, F[... F[Tn, Z]...]]]
Исходный код
Тип первого элемента кортежа
Исходный код@experimental
тип Init[X <: Tuple] = X match { case _$14 *: EmptyTuple => EmptyTuple case x *: xs => x *: Init[xs] }
Тип начальной части кортежа без последнего элемента
Исходный код
тип InverseMap[X <: Tuple, F[_]] = X match { case F[x] *: t => x *: InverseMap[t, F] case EmptyTuple => EmptyTuple }
Преобразует кортеж (F[T1], ..., F[Tn]) в (T1, ... Tn)
Исходный код
Неявное доказательство. IsMappedBy[F][X] присутствует в неявном контексте, если X является кортежем, тип каждого элемента которого сконструирован с помощью F. Например, (F[A1], ..., F[An]), но не (F[A1], B2, ..., F[An]), где B2 не имеет формы F[A].
Исходный код@experimental
Тип последнего элемента кортежа
Исходный код
тип Map[Tup <: Tuple, F[_ <: Union[Tup]]] = Tup match { case EmptyTuple => EmptyTuple case h *: t => F[h] *: Map[t, F] }
Преобразует кортеж (T1, ..., Tn) в (F[T1], ..., F[Tn])
Исходный код
Литеральное целочисленное значение размера кортежа
Исходный код
Разделяет кортеж (T1, ..., Tn) на пару двух кортежей (T1, ..., Ti) и (Ti+1, ..., Tn).
Исходный код
Тип хвоста кортежа
Исходный код
тип Take[T <: Tuple, N <: Int] = N match { case 0 => EmptyTuple case S[n1] => T match { case EmptyTuple => EmptyTuple case x *: xs => x *: Take[xs, n1] } }
Преобразует кортеж (T1, ..., Tn) в (T1, ..., Ti).
Исходный код
Для данного кортежа (T1, ..., Tn), возвращает объединение его типов членов: T1 | ... | Tn. Возвращает Nothing, если кортеж пуст.
Источник
type Zip[T1 <: Кортеж, T2 <: Кортеж] = (T1, T2) match { case (h1 *: t1, h2 *: t2) => (h1, h2) *: Zip[t1, t2] case (ПустойКортеж, _$11) => ПустойКортеж case (_$12, ПустойКортеж) => ПустойКортеж case Любой => Кортеж }
Для двух кортежей, A1 *: ... *: An * At и B1 *: ... *: Bn *: Bt, где по крайней мере один из At или Bt является EmptyTuple или Tuple, возвращает тип кортежа (A1, B1) *: ... *: (An, Bn) *: Ct, где Ct равно EmptyTuple, если At или Bt равны EmptyTuple, в противном случае Ct равно Tuple.
Наследуемые типы
Источник
type MirroredElemLabels <: Кортеж
Имена элементов продукта
| Наследованно от | Mirror |
|---|
Источник
type MirroredLabel <: String
Название типа
| Наследованно от | Mirror |
|---|
Конкретные методы
Источник
def apply(): ПустойКортеж
Пустой кортеж
Источник
Кортеж с одним элементом
Источник
Преобразовать массив в кортеж неизвестной арности и типов
Источник
Преобразовать неизменяемый массив в кортеж неизвестной арности и типов
Источник
Преобразовать Product в кортеж неизвестной арности и типов
Источник
Источник
def unapply(x: ПустойКортеж): true
Сопоставляет пустой кортеж.
Указанные значения
Источник@since("3.1")
Источник@since("3.1")
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/Tuple$.html