Spec-Zone.ru › Scala 3.1

Класс scala.Some

Исходный код

@SerialVersionUID(1234815782226070388L)
final case class Some[+A](value: A) extends Option[A]

Класс Some[A] представляет существующие значения типа A.

Надтипы
класс Option[A]
тракт Serializable
тракт Product
тракт Equals
тракт IterableOnce[A]
класс Object
тракт Matchable
класс Any

Наследуемые классы

Исходный код
класс WithFilter(p: A => Boolean)

Нам нужен целый класс WithFilter, чтобы соблюдать контракт «не создаёт новую коллекцию», хотя в коллекции с максимальным размером 1 это, вероятно, не имеет большого значения.

Наследованный от Option

Конкретные методы

Исходный код
def get: A

Наследуемые методы

Исходный код@inline
final def collect[B](pf: PartialFunction[A, B]): Option[B]

Возвращает scala.Some, содержащий результат применения pf к содержащемуся значению этого scala.Option, если этот параметр не пуст и pf определена для этого значения. В противном случае возвращает None.

Параметры значений
pf

частичная функция.

Возвращает

результат применения pf к значению этого scala.Option (если возможно), или None.

Пример
// Returns Some(HTTP) because the partial function covers the case.
Some("http") collect {case "http" => "HTTP"}
// Returns None because the partial function doesn't cover the case.
Some("ftp") collect {case "http" => "HTTP"}
// Returns None because the option is empty. There is no value to pass to the partial function.
None collect {case value => value}
Наследованный от Option

Исходный код
final def contains[A1 >: A](elem: A1): Boolean

Проверяет, содержит ли параметр данное значение в качестве элемента.

Это эквивалентно:

option match {
 case Some(x) => x == elem
 case None    => false
}
Параметры значений
elem

тестируемый элемент.

Возвращает

true если у параметра есть элемент, который равен (как определено ==) elem, в противном случае false.

Пример
// Returns true because Some instance contains string "something" which equals "something".
Some("something") contains "something"
// Returns false because "something" != "anything".
Some("something") contains "anything"
// Returns false when method called on None.
None contains "anything"
Наследованный от Option

Исходный код@inline
final def exists(p: A => Boolean): Boolean

Возвращает true, если этот параметр не пуст, и предикат p возвращает true, когда он применяется к значению этого scala.Option. В противном случае возвращает false.

Это эквивалентно:

option match {
 case Some(x) => p(x)
 case None    => false
}
Параметры значений
p

тестируемый предикат

Наследованный от Option

Исходный код@inline
final def filter(p: A => Boolean): Option[A]

Возвращает этот scala.Option, если он не пустой, и применение предиката p к значению этого scala.Option возвращает true. В противном случае возвращает None.

Это эквивалентно:

option match {
 case Some(x) if p(x) => Some(x)
 case _               => None
}
Параметры значений
p

предикат, используемый для проверки.

Наследованный от Option

Исходный код@inline
final def filterNot(p: A => Boolean): Option[A]

Возвращает этот scala.Option, если он не пустой, и применение предиката p к значению этого scala.Option возвращает false. В противном случае возвращает None.

Это эквивалентно:

option match {
 case Some(x) if !p(x) => Some(x)
 case _                => None
}
Параметры значений
p

предикат, используемый для проверки.

Наследованный от Option

Исходный код@inline
final def flatMap[B](f: A => Option[B]): Option[B]

Возвращает результат применения f к значению этого scala.Option, если этот scala.Option не пуст. Возвращает None если этот scala.Option пуст. Несколько отличается от map, так как ожидается, что f вернёт scala.Option (который может быть None).

Это эквивалентно:

option match {
 case Some(x) => f(x)
 case None    => None
}
Параметры значений
f

функция для применения

См. также

map

foreach

Наследованный от Option

Исходный код
def flatten[B](implicit ev: A <:< Option[B]): Option[B]

Возвращает вложенное значение scala.Option, если оно не пусто. В противном случае возвращает None.

Это эквивалентно:

option match {
 case Some(Some(b)) => Some(b)
 case _             => None
}
Параметры значений
ev

неявное преобразование, утверждающее, что значение также является scala.Option.

См. также

flatMap

Пример
Some(Some("something")).flatten
Наследованный от Option

Исходный код@inline
final def fold[B](ifEmpty: => B)(f: A => B): B

Возвращает результат применения f к значению этого scala.Option, если scala.Option не пустой. В противном случае вычисляет выражение ifEmpty.

Это эквивалентно:

option match {
 case Some(x) => f(x)
 case None    => ifEmpty
}

Это также эквивалентно:

option map f getOrElse ifEmpty
Параметры значений
f

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

ifEmpty

выражение для вычисления, если пусто.

Наследованный от Option

Исходный код@inline
final def forall(p: A => Boolean): Boolean

Возвращает true, если этот параметр пуст или предикат p возвращает true, когда применяется к значению этого scala.Option.

Это эквивалентно:

option match {
 case Some(x) => p(x)
 case None    => true
}
Параметры значений
p

предикат для проверки

Наследованный от Option

Исходный код@inline
final def foreach[U](f: A => U): Unit

Применяет заданную процедуру f к значению параметра, если он не пуст. В противном случае ничего не делает.

Это эквивалентно:

option match {
 case Some(x) => f(x)
 case None    => ()
}
Параметры значений
f

процедура для применения.

См. также

map

flatMap

Наследованный от Option

Исходный код@inline
final def getOrElse[B >: A](default: => B): B

Возвращает значение опции, если опция не пуста, в противном случае возвращает результат вычисления default.

Это эквивалентно:

option match {
 case Some(x) => x
 case None    => default
}
Параметры значения
default

выражение по умолчанию.

Унаследовано от Option

Исходный код
final def isDefined: Boolean

Возвращает true, если опция является экземпляром scala.Some, в противном случае возвращает false.

Это эквивалентно:

option match {
 case Some(_) => true
 case None    => false
}
Унаследовано от Option

Исходный код
final def isEmpty: Boolean

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

Это эквивалентно:

option match {
 case Some(_) => false
 case None    => true
}
Унаследовано от Option

Исходный код
def iterator: Iterator[A]

Возвращает итератор, возвращающий значение scala.Option, если оно не пустое, или пустой итератор, если опция пуста.

Унаследовано от Option

Исходный код
final override def knownSize: Int

Классы-предки Option -> IterableOnce
Унаследовано от Option

Исходный код@inline
final def map[B](f: A => B): Option[B]

Возвращает scala.Some, содержащий результат применения f к значению этой scala.Option, если эта scala.Option не пуста. В противном случае возвращает None.

Это эквивалентно:

option match {
 case Some(x) => Some(f(x))
 case None    => None
}
Параметры значения
f

функция для применения

См. также

flatMap

foreach

Примечание

Это похоже на flatMap, за исключением того, что здесь f не нужно оборачивать свой результат в scala.Option.

Унаследовано от Option

Исходный код
final def nonEmpty: Boolean

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

Это эквивалентно:

option match {
 case Some(_) => true
 case None    => false
}
Примечание

Реализовано здесь, чтобы избежать неявного преобразования в Iterable.

Унаследовано от Option

Исходный код@inline
final def orElse[B >: A](alternative: => Option[B]): Option[B]

Возвращает этот scala.Option, если он не пустой, в противном случае возвращает результат вычисления alternative.

Это эквивалентно:

option match {
 case Some(x) => Some(x)
 case None    => alternative
}
Параметры значения
alternative

альтернативное выражение.

Унаследовано от Option

Исходный код@inline
final def orNull[A1 >: A](implicit ev: Null <: A1): A1

Возвращает значение опции, если она не пустая, или null, если она пустая.

Хотя использование null не рекомендуется, код, написанный для использования scala.Option, часто должен взаимодействовать с кодом, который ожидает и возвращает null.

Это эквивалентно:

option match {
 case Some(x) => x
 case None    => null
}
Пример
val initialText: Option[String] = getInitialText
val textField = new JComponent(initialText.orNull,20)
Унаследовано от Option

Исходный код
def productElementNames: Iterator[String]

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

Унаследовано от Product

Исходный код
def productIterator: Iterator[Any]

Итератор по всем элементам этого произведения.

Возвращает

в реализации по умолчанию, Iterator[Any]

Унаследовано от Product

Исходный код
def stepper[S <: Stepper[_]](implicit shape: StepperShape[A, S]): S

Возвращает scala.collection.Stepper для элементов этого набора.

Stepper позволяет создавать Java-поток для работы с набором, см. scala.jdk.StreamConverters. Для наборов, содержащих примитивные значения, Stepper можно использовать как итератор, который не упаковывает элементы.

Неявный параметр scala.collection.StepperShape определяет тип возвращаемого Stepper в соответствии с типом элемента этого набора.

  • Для наборов, содержащих Int, Short, Byte или Char, возвращается scala.collection.IntStepper

  • Для наборов, содержащих Double или Float, возвращается scala.collection.DoubleStepper

  • Для наборов, содержащих Long, возвращается scala.collection.LongStepper

  • Для любого другого типа элемента возвращается scala.collection.AnyStepper

Обратите внимание, что этот метод переопределен в подклассах, и тип возвращаемого значения уточняется до S with EfficientSplit, например scala.collection.IndexedSeqOps.stepper. Для Steppers, помеченных scala.collection.Stepper.EfficientSplit, конвертеры в scala.jdk.StreamConverters позволяют создавать параллельные потоки, в то время как обычные Steppers можно преобразовать только в последовательные потоки.

Унаследовано от IterableOnce

Исходный код@inline
final def toLeft[X](right: => X): Either[A, X]

Возвращает scala.util.Right, содержащий переданный аргумент right, если этот набор пустой, или scala.util.Left, содержащий значение этого scala.Option, если этот scala.Option не пустой.

Это эквивалентно:

option match {
 case Some(x) => Left(x)
 case None    => Right(right)
}
Параметры значения
right

выражение, которое вычисляется и возвращается, если это пусто

См. также

toRight

Унаследовано от Option

Исходный код
def toList: List[A]

Возвращает список, содержащий значение scala.Option, если оно не пустое, или пустой список, если scala.Option пустое.

Это эквивалентно:

option match {
 case Some(x) => List(x)
 case None    => Nil
}
Унаследовано от Option

Исходный код@inline
final def toRight[X](left: => X): Either[X, A]

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

Это эквивалентно:

option match {
 case Some(x) => Right(x)
 case None    => Left(left)
}
Параметры значения
left

выражение для вычисления и возврата, если этот параметр пуст

См. также

toLeft

Унаследовано от Option

Исходный код
final def unzip[A1, A2](implicit asPair: A <:< (A1, A2)): (Option[A1], Option[A2])

Преобразует Option пары в Option первого элемента и Option второго элемента.

Это эквивалентно:

option match {
  case Some((x, y)) => (Some(x), Some(y))
  case _            => (None,    None)
}
Параметры типа
A1

тип первой половины пары элементов

A2

тип второй половины пары элементов

Параметры значения
asPair

неявное преобразование, которое утверждает, что тип элемента этого Option является парой.

Возвращает

пара Options, содержащая соответственно первую и вторую половины пары элементов этого Option.

Унаследовано от Option

Исходный код
final def unzip3[A1, A2, A3](implicit asTriple: A <:< (A1, A2, A3)): (Option[A1], Option[A2], Option[A3])

Преобразует Option тройки в три Option, каждый содержащий элемент из каждой позиции тройки.

Это эквивалентно:

option match {
  case Some((x, y, z)) => (Some(x), Some(y), Some(z))
  case _               => (None,    None,    None)
}
Параметры типа
A1

тип первого из трех элементов в тройке

A2

тип второго из трех элементов в тройке

A3

тип третьего из трех элементов в тройке

Параметры значения
asTriple

неявное преобразование, которое утверждает, что тип элемента этого Option является тройкой.

Возвращает

тройка Options, содержащая соответственно первый, второй и третий элементы из тройки элементов этого Option.

Унаследовано от Option

Исходный код@inline
final def withFilter(p: A => Boolean): WithFilter

Необходимо для предотвращения неявного преобразования scala.Option в scala.collection.Iterable в for выражениях.

Унаследовано от Option

Исходный код
final def zip[A1 >: A, B](that: Option[B]): Option[(A1, B)]

Возвращает scala.Some, образованную из этого Option и другого Option путем объединения соответствующих элементов в пару. Если любой из двух Option пуст, возвращается None.

Это эквивалентно:

(option1, option2) match {
  case (Some(x), Some(y)) => Some((x, y))
  case _                  => None
}
Параметры значения
that

Option, который будет объединён

Пример
// Returns Some(("foo", "bar")) because both options are nonempty.
Some("foo") zip Some("bar")
// Returns None because `that` option is empty.
Some("foo") zip None
// Returns None because `this` option is empty.
None zip Some("bar")
Унаследовано от Option

© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/Some.html

Spec-Zone.ru

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