Класс scala.util.Right
final case class Right[+A, +B](value: B) extends Either[A, B] with Product with Serializable
Конструкторы экземпляров
новый 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 зависит от платформы.
- возвращает
копия объекта-приёмника.
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]
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
объект класса, соответствующий типу получателя во время выполнения.
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
def isRight: Boolean
Возвращает true если это Right, false в противном случае.
Left("tulip").isRight // false
Right("venus fly-trap").isRight // true
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
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
Правая сторона дизъюнктного объединения, в отличие от стороны scala.util.Left.