Кортеж Tuple.Tuple
объект Tuple
| Супертипы | |
|---|---|
| Тип «self» |
Типы
Исходник
тип 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] <: Boolean = x match {
case String => true
case _ => false
}
summon[Tuple.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]...]]]
Исходник
Тип первого элемента кортежа
Исходник
тип 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]
Исходник
Тип последнего элемента кортежа
Исходник
тип 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])
Исходник
Литеральная константа типа Int — размер кортежа
Исходник
Разделяет кортеж (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 если кортеж пуст.
Исходник
тип Zip[T1 <: Tuple, T2 <: Tuple] = (T1, T2) match { case (h1 *: t1, h2 *: t2) => (h1, h2) *: Zip[t1, t2] case (EmptyTuple, _$11) => EmptyTuple case (_$12, EmptyTuple) => EmptyTuple case Any => Tuple }
Даны две кортежи, A1 *: ... *: An * At и B1 *: ... *: Bn *: Bt где по крайней мере один из At или Bt является EmptyTuple или Tuple, возвращает тип кортежа (A1, B1) *: ... *: (An, Bn) *: Ct где Ct является EmptyTuple если At или Bt является EmptyTuple, в противном случае Ct является Tuple.
Наследуемые типы
Исходный код
type MirroredElemLabels <: Tuple
Названия элементов продукта
| Наследуется от | Mirror |
|---|
Исходный код
type MirroredLabel <: String
Имя типа
| Наследуется от | Mirror |
|---|
Конкретные методы
Исходный код
def apply(): EmptyTuple
Пустой кортеж
Исходный код
Кортеж с одним элементом
Исходный код
Преобразование массива в кортеж неизвестной арности и типов
Исходный код
Преобразование неизменяемого массива в кортеж неизвестной арности и типов
Исходный код
Преобразование Product в кортеж неизвестной арности и типов
Исходный код
Исходный код
def unapply(x: EmptyTuple): true
Совпадает с пустым кортежем.
Установки
Исходный код
Исходный код
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.2.0/scala/Tuple$.html