Spec-Zone.ru › Scala 2.13 Library

Класс scala.=:=

sealed abstract class =:=[From, To] extends <:<[From, To] with Serializable

Экземпляр A =:= B свидетельствует о том, что типы A и B равны. Он также выполняет роль A <:< B, но не B <:< A (непосредственно) из-за ограничений на наследование.

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

From

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

To

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

Annotations
@implicitNotFound("Не удается доказать, что ${From} =:= ${To}.")
Source
typeConstraints.scala
Пример:
  1. Вариант на месте для scala.collection.mutable.ArrayBuffer#transpose

    implicit class BufOps[A](private val buf: ArrayBuffer[A]) extends AnyVal {
      def inPlaceTranspose[E]()(implicit ev: A =:= ArrayBuffer[E]) = ???
      // Because ArrayBuffer is invariant, we can't make do with just a A <:< ArrayBuffer[E]
      // Getting buffers *out* from buf would work, but adding them back *in* wouldn't.
    }
См. также

<:< для выражения ограничений на подтипизацию

Линейные надтипы
<:<[From, To], 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, поэтому он гарантирует, что это действительно представляет равенство типов.

returns

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

Definition Classes
=:= → <:<

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

final def !=(arg0: Any): Boolean

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

returns

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

Definition Classes
AnyRef → Any

final def ##(): Int

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

returns

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

Definition Classes
AnyRef → Any

def +(other: String): String

Implicit
Этот член добавлен неявным преобразованием из =:=[From, To] в any2stringadd[=:=[From, To]] выполненным методом any2stringadd в scala.Predef.
Definition Classes
any2stringadd

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

Implicit
Этот член добавлен неявным преобразованием из =:=[From, To] в ArrowAssoc[=:=[From, To]] выполненным методом ArrowAssoc в scala.Predef.Это преобразование произойдёт только если To является подклассом Option[Nothing] (To <: Option[Nothing]).
Definition Classes
ArrowAssoc
Annotations
@inline()

final def ==(arg0: Any): Boolean

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

returns

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

Definition Classes
AnyRef → Any

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

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

Если From <: To и To <: C, то From <: C (подтипизация транзитивна)

Definition Classes
<:<

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

Компонует две инстанции Function1 в новый Function1, с применением этого метода в первую очередь.

returns

новый метод f такой, что f(x) == g(apply(x))

Definition Classes
<:< → Function1

def apply(f: From): To

Преобразование From в To. Это гарантированно является тождественным методом.

Этот метод часто вызывается неявным образом, так как неявный A =:= B служит неявным представлением A => B.

f

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

returns

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

Definition Classes
=:= → <:< → Function1

final def asInstanceOf[T0]: T0

Преобразовать объект-получатель в тип T0.

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

returns

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

Definition Classes
Any
Исключения

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

def clone(): AnyRef

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

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

returns

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

Атрибуты
protected[java.lang]
Definition Classes
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]

Если From <: To и C <: From, то C <: To (подтипизация транзитивна)

Definition Classes
<:<

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

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

returns

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

Definition Classes
<:< → Function1

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

Неявный
Этот член добавлен неявным преобразованием из =:=[From, To] в Ensuring[=:=[From, To]], выполненным методом Ensuring в scala.Predef.
Definition Classes
Ensuring

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

Неявный
Этот член добавлен неявным преобразованием из =:=[From, To] в Ensuring[=:=[From, To]], выполненным методом Ensuring в scala.Predef.
Definition Classes
Ensuring

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

Неявный
Этот член добавлен неявным преобразованием из =:=[From, To] в Ensuring[=:=[From, To]], выполненным методом Ensuring в scala.Predef.
Definition Classes
Ensuring

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

Неявный
Этот член добавлен неявным преобразованием из =:=[From, To] в Ensuring[=:=[From, To]], выполненным методом Ensuring в scala.Predef.
Definition Classes
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 flip: =:=[To, From]

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]]

Поднимает это свидетельство над любым конструктором типов F.

Definition Classes
=:= → <:<

def liftContra[F[_]]: =:=[F[To], F[From]]

Поднимает это свидетельство над конструктором типов F, но перевернутым.

Definition Classes
=:= → <:<

final def ne(arg0: AnyRef): Boolean

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

возвращает

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

Определяющие классы
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 может использоваться в экстракторах.

    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/$eq$colon$eq.html

Spec-Zone.ru

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