Spec-Zone.ru › Scala 2.13 Library

Класс scala.util.Left

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

Левая сторона разделяющего союза, в отличие от правой стороны scala.util.Right.

Source
Either.scala
Линейные надтипы
Either[A, B], java.io.Serializable, Product, Equals, AnyRef, Any

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

новый Left(значение: A)

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

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

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

возвращает

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

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

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

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

возвращает

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

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

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

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

функция ->[B](y: B): (Left[A, B], B)

Неявный
Этот член добавлен неявным преобразованием из Left[A, B] в ArrowAssoc[Left[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(условие: (Left[A, B]) => Булево, сообщение: => Любой): 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 реализует отношение эквивалентности на не-нулевых экземплярах 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[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).

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

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

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

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
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], в противном случае это значение будет возвращено без изменений.

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
Этот член добавляется неявным преобразованием из Left[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: A

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 withRight[B1 >: B]: Either[A, B1]

Преобразует это Left[A, B] к Either[A, B1]

Left(1)                   // Either[Int, Nothing]
Left(1).withRight[String] // 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/Left.html

Spec-Zone.ru

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