Spec-Zone.ru › Scala 2.13 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
Линейные супертипы
Either[A, B], java.io.Serializable, Product, Equals, AnyRef, Any

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

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

Члены-значения

final функция !=(arg0: Любой): Булево

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

возвращает

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

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

final функция ##(): Целое

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

возвращает

значение хеш-кода, согласованное с ==

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

функция +(другое: Строка): Строка

Неявный
Этот член добавлен неявным преобразованием из 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[java.lang]
Определяющие классы
AnyRef
Аннотации
@throws(classOf[java.lang.CloneNotSupportedException]) @native()
Примечание

не указано SLS в качестве члена AnyRef

final функция contains[B1 >: B](элемент: 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"
элемент

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

возвращает

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

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

функция ensuring(условие: (Right[A, B]) => Булево, сообщение: => Любой): 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).

returns

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[java.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.

Definition Classes
Either

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

Возвращает правое значение, если это правое, или это значение, если это левое

Definition Classes
Either
Пример:
    val  l: Either[String, Either[String, Int]] = Left("pancake")
    val rl: Either[String, Either[String, Int]] = Right(Left("flounder"))
    val rr: Either[String, Either[String, Int]] = Right(Right(7))
    
     l.flatten //Either[String, Int]: Left("pancake")
    rl.flatten //Either[String, Int]: Left("flounder")
    rr.flatten //Either[String, Int]: Right(7)

    Эквивалентно flatMap(id => id)

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

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

fa

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

fb

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

возвращает

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

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 (@см java.lang.String.format).

Неявный
Этот член добавляется неявным преобразованием из Right[A, B] вStringFormat[Right[A, B]] выполняемого методом StringFormat в scala.Predef.
Definition Classes
StringFormat
Аннотации
@inline()

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

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

возвращает

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

Definition Classes
AnyRef → Any
Аннотации
@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. В последнем примере, поскольку тип аргумента стирается во время компиляции, нельзя проверить, относятся ли содержимое списка к указанному типу.

возвращает

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
Example:
    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-comprehensions для левой стороны экземпляров 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

Implicit
Этот член добавляется неявным преобразованием из Right[A, B] в MergeableEither[B], выполняемым методом MergeableEither в scala.util.Either. Это преобразование произойдет только если B является суперклассом A (B >: A).
Definition Classes
MergeableEither

final def ne(arg0: AnyRef): Boolean

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

returns

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

Definition Classes
AnyRef

final def notify(): Unit

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

Definition Classes
AnyRef
Annotations
@native()
Note

not specified by SLS as a member of AnyRef

final def notifyAll(): Unit

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

Definition Classes
AnyRef
Annotations
@native()
Note

not specified by SLS as a member of AnyRef

def orElse[A1 >: A, B1 >: B](or: => Either[A1, B1]): Either[A1, B1]

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

Right(1) orElse Left(2) // Right(1)
Left(1) orElse Left(2)  // Left(2)
Left(1) orElse Left(2) orElse Right(3) // Right(3)
Определяющие классы
Either

def productElementNames: Iterator[String]

Итератор по именам всех элементов этого продукта.

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

def swap: Either[B, A]

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

Определяющие классы
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

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

def toOption: Option[B]

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

Right(12).toOption // Some(12)
Left(12).toOption  // None
Определяющие классы
Either

def toSeq: collection.immutable.Seq[B]

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

Right(12).toSeq // Seq(12)
Left(12).toSeq  // Seq()
Определяющие классы
Either

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

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

val value: B

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()

def withLeft[A1 >: A]: Either[A1, B]

Преобразует этот Right[A, B] в Either[A1, B].

Right("x")               // Either[Nothing, String]
Right("x").withLeft[Int] // Either[Int, String]

© 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/util/Right.html

Spec-Zone.ru

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