Класс scala.<:<
Компаньон объект <:<
sealed abstract класс <:<[-From, +To] extends (From) => To with Serializable
Абстрактные члены
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))
def apply(f: From): To
Преобразование From в To. Это гарантированно будет функция тождества.
Этот метод часто вызывается неявно в качестве неявной A <:< B в виде неявного просмотра A => B.
- f
некоторое значение типа
From- возвращает
f, но с (возможно) другим типом
final def asInstanceOf[T0]: T0
Приведение типа объекта получателя к типу T0.
Обратите внимание, что успех приведения типов во время выполнения зависит от семантики стирания Scala. Поэтому выражение 1.asInstanceOf[String] выбросит ClassCastException во время выполнения, в то время как выражение List(1).asInstanceOf[List[String]] нет. В последнем примере, поскольку тип аргумента стирается во время компиляции, нельзя проверить, являются ли содержимое списка нужного типа.
- возвращает
объект получателя.
- Определяющие классы
- Any
- Исключения
ClassCastException, если объект получателя не является экземпляром стирания типаT0.
def clone(): AnyRef
Создать копию объекта-получателя.
По умолчанию реализация метода clone зависит от платформы.
- возвращает
копию объекта-получателя.
def compose[C](r: <:<[C, From]): <:<[C, To]
def compose[C](r: (C) => From): (C) => To
Компонует два экземпляра Function1 в новый Function1, применяя этот метод последним.
- возвращает
новая функция
fтакая, чтоf(x) == apply(g(x))
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 и нелокальными возвратами и исключениями, зависят от платформы.
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
объект класса, соответствующий типу объекта во время выполнения.
def hashCode(): Int
Метод hashCode для ссылочных типов. См. hashCode в scala.Any.
- returns
значение хэш-кода для этого объекта.
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 это конкатенация имени класса, «@» и хэш-кода объекта в шестнадцатеричном формате.
- возвращает
строковое представление объекта.
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
© 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
Экземпляр
A <:< Bсвидетельствует о том, чтоAявляется подтипомB. Требование неявного аргумента типаA <:< Bкодирует обобщенное ограничениеA <: B.Чтобы ограничить любой абстрактный тип
T, который находится в области видимости в списке аргументов метода (не только параметры типа самого метода), просто добавьте неявный аргумент типаT <:< U, гдеU— требуемое верхнее ограничение; или для нижних ограничений используйте:L <:< T, гдеL— требуемое нижнее ограничение.В случае любой путаницы относительно того, какой метод используется в каком направлении, все методы "Co" (включая apply) идут слева направо в типе ("с" типом), а все методы "Contra" — справа налево ("против" типа). Например, apply преобразует
FromвTo, а substituteContra заменяетToв типе наFrom.Отчасти разработан Джейсоном Зауггом.
тип, который доказан как подтип
Toтип, который доказан как надтип
Fromscala.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. }=:= для выражения ограничений равенства