Spec-Zone.ru › Scala 2.12 Library

Класс scala.util.Right

final case class Right[+A, +B](value: B) extends Either[A, B] with Product with Serializable

Правая сторона дизъюнктного объединения, в отличие от стороны scala.util.Left.

Source
Either.scala
Линейные супертипы

Конструкторы экземпляров

новый Right(значение: B)

Значения-члены

final метод !=(arg0: Любой): Булево

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

возвращает

true если !(this == that), иначе false.

Определяющие классы
AnyRef → Любой

final метод ##(): Целое

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

возвращает

хэш-значение, согласующееся с ==

Определяющие классы
AnyRef → Любой

метод +(other: Строка): Строка

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

метод ->[B](y: B): (Right[A, B], B)

Неявный
Этот член добавлен неявным преобразованием из Right[A, B] в ArrowAssoc[Right[A, B]] с помощью метода ArrowAssoc в scala.Predef.
Определяющие классы
ArrowAssoc
Аннотации
@inline()

final метод ==(arg0: Любой): Булево

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

возвращает

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

Определяющие классы
AnyRef → Любой

final метод asInstanceOf[T0]: T0

Преобразование объекта-приёмника к типу T0.

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

возвращает

объект-приёмник.

Определяющие классы
Любой
Исключения

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

метод clone(): AnyRef

Создаёт копию объекта-приёмника.

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

возвращает

копия объекта-приёмника.

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

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

final метод contains[B1 >: B](elem: B1): Булево

Возвращает true если это Right и его значение равно elem (как определено ==), возвращает false в противном случае.

// Returns true because value of Right is "something" which equals "something".
Right("something") contains "something"

// Returns false because value of Right is "something" which does not equal "anything".
Right("something") contains "anything"

// Returns false because it's not a Right value.
Left("something") contains "something"
elem

элемент для проверки.

возвращает

true если это значение Right равно elem.

Определяющие классы
Either

метод ensuring(cond: (Right[A, B]) ⇒ Булево, msg: ⇒ Любой): Right[A, B]

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

def ensuring(cond: (Right[A, B]) ⇒ Boolean): Right[A, B]

Неявный
Этот член добавлен неявным преобразованием из Right[A, B] в Ensuring[Right[A, B]] с помощью метода Ensuring в scala.Predef.
Классы определений
Ensuring

def ensuring(cond: Boolean, msg: ⇒ Any): Right[A, B]

Неявный
Этот член добавлен неявным преобразованием из Right[A, B] в Ensuring[Right[A, B]] с помощью метода Ensuring в scala.Predef.
Классы определений
Ensuring

def ensuring(cond: Boolean): Right[A, B]

Неявный
Этот член добавлен неявным преобразованием из Right[A, B] в Ensuring[Right[A, B]] с помощью метода 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).

возвращает

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

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

def exists(p: (B) ⇒ Boolean): Boolean

Возвращает false если Left или возвращает результат применения заданного предиката к значению Right.

Right(12).exists(_ > 10)   // true
Right(7).exists(_ > 10)    // false
Left(12).exists(_ => true) // false
Классы определений
Either

def filterOrElse[A1 >: A](p: (B) ⇒ Boolean, zero: ⇒ A1): Either[A1, B]

Возвращает Right с существующим значением Right если это Right и заданный предикат p выполняется для правого значения, или Left(zero) если это Right и заданный предикат p не выполняется для правого значения, или Left с существующим значением Left если это Left.

Right(12).filterOrElse(_ > 10, -1)   // Right(12)
Right(7).filterOrElse(_ > 10, -1)    // Left(-1)
Left(7).filterOrElse(_ => false, -1) // Left(7)
Классы определений
Either

def finalize(): Unit

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

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

Атрибуты
protected[lang]
Классы определений
AnyRef
Аннотации
@throws( classOf[java.lang.Throwable] )
Примечание

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

def flatMap[A1 >: A, B1](f: (B) ⇒ Either[A1, B1]): Either[A1, B1]

Связывает заданную функцию по Right.

f

Функция для связывания по Right.

Классы определений
Either

def fold[C](fa: (A) ⇒ C, fb: (B) ⇒ C): C

Применяет fa если это Left или fb если это Right.

fa

функция для применения, если это Left

fb

функция для применения, если это Right

returns

результаты применения функции

Definition Classes
Either
Пример:
    val result = util.Try("42".toInt).toEither
    result.fold(
      e => s"Operation failed with $e",
      v => s"Operation produced value: $v"
    )

def forall(f: (B) ⇒ Boolean): Boolean

Возвращает true если Left или возвращает результат применения заданного предиката к значению Right.

Right(12).forall(_ > 10)    // true
Right(7).forall(_ > 10)     // false
Left(12).forall(_ => false) // true
Definition Classes
Either

def foreach[U](f: (B) ⇒ U): Unit

Выполняет заданную функцию со побочными эффектами, если это Right.

Right(12).foreach(println) // prints "12"
Left(12).foreach(println)  // doesn't print
f

Функция с побочными эффектами для выполнения.

Definition Classes
Either

def formatted(fmtstr: String): String

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

Implicit
Этот член добавлен с помощью неявного преобразования из Right[A, B] в StringFormat[Right[A, B]] с помощью метода StringFormat в scala.Predef.
Definition Classes
StringFormat
Annotations
@inline()

final def getClass(): Class[_]

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

returns

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

Definition Classes
AnyRef → Any
Annotations
@native()

def getOrElse[B1 >: B](or: ⇒ B1): B1

Возвращает значение из этого Right или заданный аргумент, если это Left.

Right(12).getOrElse(17) // 12
Left(12).getOrElse(17)  // 17
Definition Classes
Either

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 isLeft: Boolean

Возвращает true если это Left, false в противном случае.

Left("tulip").isLeft // true
Right("venus fly-trap").isLeft // false
Definition Classes
Right → Either

def isRight: Boolean

Возвращает true если это Right, false в противном случае.

Left("tulip").isRight // false
Right("venus fly-trap").isRight // true
Definition Classes
Right → Either

def joinLeft[A1 >: A, B1 >: B, C](implicit ev: <:<[A1, Either[C, B1]]): Either[C, B1]

Объединяет Either через Left.

Этот метод требует, чтобы левая сторона этого Either сама была типа Either. То есть, это должно быть что-то вроде:

Either[Either[C, B], B]

(что учитывает ограничения по типу, показанные ниже.)

Если этот экземпляр Left[Either[C, B]], то содержащееся Either[C, B] будет возвращено, иначе это значение будет возвращено без изменений.

Left[Either[Int, String], String](Right("flower")).joinLeft // Result: Right("flower")
Left[Either[Int, String], String](Left(12)).joinLeft // Result: Left(12)
Right[Either[Int, String], String]("daisy").joinLeft // Result: Right("daisy")

Этот метод и joinRight, аналогичны Option#flatten.

Definition Classes
Either

def joinRight[A1 >: A, B1 >: B, C](implicit ev: <:<[B1, Either[A1, C]]): Either[A1, C]

Присоединяет Either к Right.

Этот метод требует, чтобы правая сторона этого Either была типом Either. То есть, это должен быть какой-то тип, например:

Either[A, Either[A, C]]

(что учитывает ограничения типа, показанные ниже.)

Если этот экземпляр является Right[Either[A, C]], то будет возвращено содержащееся Either[A, C], в противном случае это значение будет возвращено без изменений.

Definition Classes
Either
Пример:
    Right[String, Either[String, Int]](Right(12)).joinRight // Result: Right(12)
    Right[String, Either[String, Int]](Left("flower")).joinRight // Result: Left("flower")
    Left[String, Either[String, Int]]("flower").joinRight // Result: Left("flower")

    Этот метод и joinLeft аналогичны Option#flatten

def left: LeftProjection[A, B]

Проецирует этот Either как Left.

Это позволяет использовать for-компрессии над левой стороной экземпляров Either, изменяя обычный правый уклон Either.

Например

for (s <- Left("flower").left) yield s.length // Left(6)

Продолжая аналогию с scala.Option, LeftProjection объявляет, что Left должно быть аналогично Some в некотором коде.

// using Option
def interactWithDB(x: Query): Option[Result] =
  try Some(getResultFromDatabase(x))
  catch {
    case _: SQLException => None
  }

// this will only be executed if interactWithDB returns a Some
val report = for (result <- interactWithDB(someQuery)) yield generateReport(result)
report match {
  case Some(r) => send(r)
  case None    => log("report not generated, not sure why...")
}

// using Either
def interactWithDB(x: Query): Either[Exception, Result] =
  try Right(getResultFromDatabase(x))
  catch {
    case e: SQLException => Left(e)
  }

 // run a report only if interactWithDB returns a Right
 val report = for (result <- interactWithDB(someQuery)) yield generateReport(result)
 report match {
   case Right(r) => send(r)
   case Left(e)  => log(s"report not generated, reason was $e")
 }
 // only report errors
 for (e <- interactWithDB(someQuery).left) log(s"query failed, reason was $e")
Definition Classes
Either

def map[B1](f: (B) ⇒ B1): Either[A, B1]

Применяет заданную функцию, если это Right.

Right(12).map(x => "flower") // Result: Right("flower")
Left(12).map(x => "flower")  // Result: Left(12)
Definition Classes
Either

def merge: B

Неявный
Этот член добавляется неявным преобразованием из Right[A, B] в MergeableEither[B], выполненное методом MergeableEither в scala.util.Either.
Definition Classes
MergeableEither

final def ne(arg0: AnyRef): Boolean

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

возвращает

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

Definition Classes
AnyRef

final def notify(): Unit

Разбуждает один поток, ждущий монитора объекта-приёмника.

Definition Classes
AnyRef
Аннотации
@native()
Примечание

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

final def notifyAll(): Unit

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

Definition Classes
AnyRef
Аннотации
@native()
Примечание

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

def right: RightProjection[A, B]

Проецирует этот Either как Right.

Поскольку Either имеет правый уклон, этот метод обычно не требуется.

Definition Classes
Either

def swap: Either[B, A]

Если это Left, то возвращает левое значение в Right или наоборот.

Definition Classes
Either
Примеры:
    val left: Either[String, Int]  = Left("left")
    val right: Either[Int, String] = left.swap // Result: Right("left")
    ,
    val right = Right(2)
    val left  = Left(3)
    for {
      r1 <- right
      r2 <- left.swap
    } yield r1 * r2 // Right(6)

final def synchronized[T0](arg0: ⇒ T0): T0

Definition Classes
AnyRef

def toOption: Option[B]

Возвращает Some, содержащее значение Right, если оно существует, или None, если это Left.

Right(12).toOption // Some(12)
Left(12).toOption  // None
Definition Classes
Either

def toSeq: collection.immutable.Seq[B]

Возвращает Seq, содержащее значение Right, если оно существует, или пустое Seq если это Left.

Right(12).toSeq // Seq(12)
Left(12).toSeq  // Seq()
Definition Classes
Either

def toTry(implicit ev: <:<[A, Throwable]): Try[B]

Definition Classes
Either

val value: B

final def wait(): Unit

Definition Classes
AnyRef
Аннотации
@throws( ... )

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

Определяющие классы
AnyRef
Аннотации
@throws( ... )

final def wait(arg0: Long): Unit

Определяющие классы
AnyRef
Аннотации
@throws( ... ) @native()

def →[B](y: B): (Right[A, B], B)

Неявный
Этот член добавлен с помощью неявного преобразования из Right[A, B] в ArrowAssoc[Right[A, B]] выполненного методом ArrowAssoc в scala.Predef.
Определяющие классы
ArrowAssoc

© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.12.9/scala/util/Right.html

Spec-Zone.ru

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