Spec-Zone.ru › Scala 2.13 Library

Класс scala.<:<

Компаньон объект <:<

sealed abstract класс <:<[-From, +To] extends (From) => To with Serializable

Экземпляр A <:< B свидетельствует о том, что A является подтипом B. Требование неявного аргумента типа A <:< B кодирует обобщенное ограничение A <: B.

Чтобы ограничить любой абстрактный тип T, который находится в области видимости в списке аргументов метода (не только параметры типа самого метода), просто добавьте неявный аргумент типа T <:< U, где U — требуемое верхнее ограничение; или для нижних ограничений используйте: L <:< T, где L — требуемое нижнее ограничение.

В случае любой путаницы относительно того, какой метод используется в каком направлении, все методы "Co" (включая apply) идут слева направо в типе ("с" типом), а все методы "Contra" — справа налево ("против" типа). Например, apply преобразует From в To, а substituteContra заменяет To в типе на From.

Отчасти разработан Джейсоном Зауггом.

From

тип, который доказан как подтип To

To

тип, который доказан как надтип From

Аннотации
@implicitNotFound("Не удается доказать, что ${From} <:< ${To}.")
Источник
typeConstraints.scala
Пример:
  1. scala.Option#flatten

    sealed trait Option[+A] {
      // def flatten[B, A <: Option[B]]: Option[B] = ...
      // won't work, since the A in flatten shadows the class-scoped A.
      def flatten[B](implicit ev: A <:< Option[B]): Option[B]
        = if(isEmpty) None else ev(get)
      // Because (A <:< Option[B]) <: (A => Option[B]), ev can be called to turn the
      // A from get into an Option[B], and because ev is implicit, that call can be
      // left out and inserted automatically.
    }
См. также

=:= для выражения ограничений равенства

Линейные надтипы
java.io.Serializable, (From) => To, AnyRef, Any
Известные подклассы
=:=

Абстрактные члены

abstract def substituteBoth[F[-_, +_]](ftf: F[To, From]): F[From, To]

Заменить To на From и From на To в типе F[To, From], учитывая, что F является контравариантным по первому аргументу и ковариантным по второму. По существу меняет To и From в типе ftf.

Эквивалентен по силе каждому из substituteCo и substituteContra.

Этот метод невозможно реализовать без throw или иного "обмана", если From <: To, поэтому он гарантирует, что это действительно представляет собой отношение подтипов.

возвращает

ftf, но с (возможно) другим типом

Конкретные члены значений

final def !=(arg0: Any): Boolean

Тестирование двух объектов на неравенство.

возвращает

true если !(this == that), в противном случае false.

Определяющие классы
AnyRef → Any

final def ##(): Int

Эквивалентно x.hashCode за исключением упакованных числовых типов и null. Для числовых типов он возвращает значение хэша, которое соответствует равенству значений: если два экземпляра типа значения сравниваются как true, то ## для каждого из них вернёт одинаковое значение хэша. Для null возвращает хэш-код, где null.hashCode вызывает NullPointerException.

возвращает

значение хэша, соответствующее ==

Определяющие классы
AnyRef → Any

def +(other: String): String

Неявный
Этот член добавлен неявным преобразованием из <:<[From, To] вany2stringadd[<:<[From, To]] с помощью метода any2stringadd в scala.Predef.
Определяющие классы
any2stringadd

def ->[B](y: B): (<:<[From, To], B)

Неявный
Этот член добавлен неявным преобразованием из <:<[From, To] вArrowAssoc[<:<[From, To]] с помощью метода ArrowAssoc в scala.Predef.Это преобразование будет выполнено только если To является подклассом Option[Nothing] (To <: Option[Nothing]).
Определяющие классы
ArrowAssoc
Аннотации
@inline()

final def ==(arg0: Any): Boolean

Выражение x == that эквивалентно if (x eq null) that eq null else x.equals(that).

возвращает

true если объект получателя эквивалентен аргументу; false в противном случае.

Определяющие классы
AnyRef → Any

def andThen[C](r: <:<[To, C]): <:<[From, C]

def andThen[C](r: (To) => C): (From) => C

Композиция двух экземпляров Function1 в новый Function1, при этом сначала применяется этот метод.

возвращает

новая функция f такая, что f(x) == g(apply(x))

Определяющие классы
<:< → Function1

def apply(f: From): To

Преобразование From в To. Это гарантированно будет функция тождества.

Этот метод часто вызывается неявно в качестве неявной A <:< B в виде неявного просмотра A => B.

f

некоторое значение типа From

возвращает

f, но с (возможно) другим типом

Определяющие классы
<:< → Function1

final def asInstanceOf[T0]: T0

Приведение типа объекта получателя к типу T0.

Обратите внимание, что успех приведения типов во время выполнения зависит от семантики стирания Scala. Поэтому выражение 1.asInstanceOf[String] выбросит ClassCastException во время выполнения, в то время как выражение List(1).asInstanceOf[List[String]] нет. В последнем примере, поскольку тип аргумента стирается во время компиляции, нельзя проверить, являются ли содержимое списка нужного типа.

возвращает

объект получателя.

Определяющие классы
Any
Исключения

ClassCastException, если объект получателя не является экземпляром стирания типа T0.

def clone(): AnyRef

Создать копию объекта-получателя.

По умолчанию реализация метода clone зависит от платформы.

возвращает

копию объекта-получателя.

Атрибуты
protected[java.lang]
Определяющие классы
AnyRef
Аннотации
@throws(classOf[java.lang.CloneNotSupportedException]) @native()
Примечание

не определен SLS как член AnyRef

def compose[C](r: <:<[C, From]): <:<[C, To]

def compose[C](r: (C) => From): (C) => To

Компонует два экземпляра Function1 в новый Function1, применяя этот метод последним.

возвращает

новая функция f такая, что f(x) == apply(g(x))

Определяющие классы
<:< → Function1

def ensuring(cond: (<:<[From, To]) => Boolean, msg: => Any): <:<[From, To]

Неявный
Этот член добавлен неявным преобразованием из <:<[From, To] в Ensuring[<:<[From, To]] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: (<:<[From, To]) => Boolean): <:<[From, To]

Неявный
Этот член добавлен неявным преобразованием из <:<[From, To] в Ensuring[<:<[From, To]] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: Boolean, msg: => Any): <:<[From, To]

Неявный
Этот член добавлен неявным преобразованием из <:<[From, To] в Ensuring[<:<[From, To]] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

def ensuring(cond: Boolean): <:<[From, To]

Неявный
Этот член добавлен неявным преобразованием из <:<[From, To] в Ensuring[<:<[From, To]] с помощью метода Ensuring в scala.Predef.
Определяющие классы
Ensuring

final def eq(arg0: AnyRef): Boolean

Проверяет, является ли аргумент (that) ссылкой на объект-получатель (this).

Метод eq реализует отношение эквивалентности на непустых экземплярах AnyRef, и имеет три дополнительных свойства:

    Он согласован: для любых непустых экземпляров x и y типа AnyRef, многократные вызовы x.eq(y) последовательно возвращают true или последовательно возвращают false.Для любого непустого экземпляра x типа AnyRef, x.eq(null) и null.eq(x) возвращают false. null.eq(null) возвращает true.

При переопределении методов equals или hashCode важно обеспечить, что их поведение соответствует равенству ссылок. Таким образом, если два объекта являются ссылками друг на друга (o1 eq o2), они должны быть равны друг другу (o1 == o2) и должны иметь одинаковое значение хэш-кода (o1.hashCode == o2.hashCode).

returns

true если аргумент является ссылкой на объект-получатель; false в противном случае.

Definition Classes
AnyRef

def equals(arg0: AnyRef): Boolean

Метод равенства для ссылочных типов. Реализация по умолчанию делегирует вызов методу eq.

См. также equals в scala.Any.

returns

true если объект-получатель эквивалентен аргументу; false в противном случае.

Definition Classes
AnyRef → Any

def finalize(): Unit

Вызывается сборщиком мусора для объекта-получателя, когда больше нет ссылок на объект.

Подробности о том, когда и будет ли вызываться метод finalize, а также взаимодействие между finalize и нелокальными возвратами и исключениями, зависят от платформы.

Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.Throwable])
Note

не специфицируется SLS как член AnyRef

def formatted(fmtstr: String): String

Возвращает строку, отформатированную в соответствии с заданной строкой format. Строки форматирования соответствуют String.format (@см. java.lang.String.format).

Implicit
Этот член добавлен неявным преобразованием из <:<[From, To] вStringFormat[<:<[From, To]] выполненным методом StringFormat в scala.Predef.
Definition Classes
StringFormat
Annotations
@inline()

final def getClass(): Class[_ <: AnyRef]

Возвращает представление класса объекта во время выполнения.

returns

объект класса, соответствующий типу объекта во время выполнения.

Definition Classes
AnyRef → Any
Annotations
@native()

def hashCode(): Int

Метод hashCode для ссылочных типов. См. hashCode в scala.Any.

returns

значение хэш-кода для этого объекта.

Definition Classes
AnyRef → Any
Annotations
@native()

final def isInstanceOf[T0]: Boolean

Проверяет, соответствует ли динамический тип объекта-получателя типу T0.

Обратите внимание, что результат проверки зависит от правил стирания Scala. Поэтому выражение 1.isInstanceOf[String] вернёт false, а выражение List(1).isInstanceOf[List[String]] вернёт true. В последнем примере, поскольку аргумент типа стирается во время компиляции, проверить, соответствуют ли содержимое списка указанному типу, невозможно.

returns

true если объект-получатель является экземпляром типа T0; false в противном случае.

Definition Classes
Any

def liftCo[F[+_]]: <:<[F[From], F[To]]

def liftContra[F[-_]]: <:<[F[To], F[From]]

final def ne(arg0: AnyRef): Boolean

Эквивалентно !(this eq that).

returns

true если аргумент не является ссылкой на объект-получатель; false в противном случае.

Definition Classes
AnyRef

final def notify(): Unit

Разбуждает единственную нить, ожидающую монитора объекта-получателя.

Классы определения
AnyRef
Аннотации
@native()
Примечание

не указано SLS как член AnyRef

final def notifyAll(): Unit

Разбуждает все нити, ожидающие монитора объекта-получателя.

Классы определения
AnyRef
Аннотации
@native()
Примечание

не указано SLS как член AnyRef

def substituteCo[F[+_]](ff: F[From]): F[To]

Заменяет From в типе F[From], где F — ковариантный конструктор типов, на To.

Эквивалентно по силе каждому из substituteBoth и substituteContra.

Этот метод невозможно реализовать без throw или аналогичного "обмана", если From <: To, поэтому он гарантирует, что это действительно отражает отношение подтипизации.

возвращает

ff, но с (возможно) другим типом

def substituteContra[F[-_]](ft: F[To]): F[From]

Заменяет To в типе F[To], где F — контравариантный конструктор типов, на From.

Эквивалентно по силе каждому из substituteBoth и substituteCo.

Этот метод невозможно реализовать без throw или аналогичного "обмана", если From <: To, поэтому он гарантирует, что это действительно отражает отношение подтипизации.

возвращает

ft, но с (возможно) другим типом

final def synchronized[T0](arg0: => T0): T0

Классы определения
AnyRef

def toString(): String

Создает строковое представление этого объекта. По умолчанию представление зависит от платформы. На платформе Java это конкатенация имени класса, «@» и хэш-кода объекта в шестнадцатеричном формате.

возвращает

строковое представление объекта.

Классы определения
Function1 → AnyRef → Any

def unlift: PartialFunction[From, B]

Преобразует опциональный функцию в частичную функцию.

Неявный
Этот член добавлен неявным преобразованием из <:<[From, To] вUnliftOps[From, B] выполняется методом UnliftOps в scala.Function1.Это преобразование будет происходить только в том случае, если To является подклассом Option[B] (To <: Option[B]).
Классы определения
UnliftOps
Пример:

    В отличие от Function.unlift, этот UnliftOps.unlift метод может использоваться в экстрактpax.

    val of: Int => Option[String] = { i =>
      if (i == 2) {
        Some("matched by an optional function")
      } else {
        None
      }
    }
    
    util.Random.nextInt(4) match {
      case of.unlift(m) => // Convert an optional function to a pattern
        println(m)
      case _ =>
        println("Not matched")
    }

final def wait(): Unit

Классы определения
AnyRef
Аннотации
@throws(classOf[java.lang.InterruptedException])

final def wait(arg0: Long, arg1: Int): Unit

Классы определения
AnyRef
Аннотации
@throws(classOf[java.lang.InterruptedException])

final def wait(arg0: Long): Unit

Классы определения
AnyRef
Аннотации
@throws(classOf[java.lang.InterruptedException]) @native()

© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.13.0/scala/$less$colon$less.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API