Spec-Zone.ru › Scala 2.12 Library

Класс scala.util.Left

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

Левая сторона несовместного объединения, в отличие от правой стороны scala.util.Right.

Источник
Either.scala
Линейные супертипы

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

новый Left(value: A)

Значения членов

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

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

def ->[B](y: B): (Left[A, B], B)

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

final def ==(arg0: Any): Boolean

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

возвращает

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

Классы определения
AnyRef → Any

final def asInstanceOf[T0]: T0

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

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

возвращает

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

Классы определения
Any
Исключения

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

def clone(): AnyRef

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

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

возвращает

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

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

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

final def contains[B1 >: B](elem: B1): Boolean

Возвращает 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

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

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

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

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

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

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

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

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

final def eq(arg0: AnyRef): Boolean

Проверяет, является ли аргумент (that) ссылкой на объект-получатель (this).

Метод eq реализует отношение эквивалентности на не-null экземплярах AnyRef, и имеет три дополнительных свойства:

    Он согласован: для любых не-null экземпляров x и y типа AnyRef, несколько вызовов x.eq(y) последовательно возвращают true или последовательно возвращают false.Для любого не-null экземпляра 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 (@см. java.lang.String.format).

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

final def getClass(): Class[_]

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

returns

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

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. В последнем примере, из-за стирания типа аргумента во время компиляции, невозможно проверить, принадлежат ли элементы списка заданному типу.

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
Left → Either

def isRight: Boolean

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

Left("tulip").isRight // false
Right("venus fly-trap").isRight // true
Definition Classes
Left → 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], в противном случае это значение будет возвращено без изменений.

Описание классов
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")
Описание классов
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)
Описание классов
Either

def merge: B

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

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 right: RightProjection[A, B]

Преобразует этот Either как Right.

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

Описание классов
Either

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: A

final def wait(): Unit

Описание классов
AnyRef
Аннотации
@throws( ... )

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

Definition Classes
AnyRef
Annotations
@throws( ... )

final def wait(arg0: Long): Unit

Definition Classes
AnyRef
Annotations
@throws( ... ) @native()

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

Неявный
Этот член добавлен с помощью неявного преобразования из Left[A, B] в ArrowAssoc[Left[A, B]] с помощью метода ArrowAssoc в scala.Predef.
Definition Classes
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/Left.html

Spec-Zone.ru

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