Spec-Zone.ru › Scala 2.13 Library

Объект scala.PartialFunction

Компаньон трейт PartialFunction

объект PartialFunction

Несколько полезных операций, использующих дополнительную информацию, доступную в частичных функциях. Примеры:

import PartialFunction._

def strangeConditional(other: Any): Boolean = cond(other) {
  case x: String if x == "abc" || x == "def"  => true
  case x: Int => true
}
def onlyInt(v: Any): Option[Int] = condOpt(v) { case x: Int => x }
Источник
PartialFunction.scala
С

2.8

Линейные супертипы
AnyRef, Any

Типы членов

final класс ElementWiseExtractor[-A, +B] extends AnyVal

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

final def !=(arg0: Any): Boolean

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

returns

true если !(this == that), иначе false.

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

final def ##(): Int

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

returns

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

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

final def ==(arg0: Any): Boolean

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

returns

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

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

final def asInstanceOf[T0]: T0

Привести принимающий объект к типу T0.

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

returns

принимающий объект.

Определяющие классы
Any
Выбрасываемые исключения

ClassCastException если принимающий объект не является экземпляром стирания типа T0.

def clone(): AnyRef

Создать копию принимающего объекта.

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

returns

копия принимающего объекта.

Атрибуты
protected[java.lang]
Определяющие классы
AnyRef
Аннотации
@throws(classOf[java.lang.CloneNotSupportedException]) @native()
Примечание

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

def cond[T](x: T)(pf: PartialFunction[T, Boolean]): Boolean

Создает булево условие на основе значения и частичной функции. Ведет себя как оператор 'match' с неявным 'case _ => false' после предоставленных случаев.

x

значение для проверки

pf

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

returns

true, если x находится в области определения pf и pf(x) == true.

def condOpt[T, U](x: T)(pf: PartialFunction[T, U]): Option[U]

Преобразует PartialFunction[T, U] pf в Function1[T, Option[U]] f, результат которого Some(x) если аргумент находится в области определения pf и None иначе, и применяет его к значению x. По сути, это оператор match, который оборачивает все результаты case в Some(_) и добавляет case _ => None в конец.

x

значение для проверки

pf

PartialFunction[T, U]

returns

Some(pf(x)) если pf isDefinedAt x, None иначе.

def empty[A, B]: PartialFunction[A, B]

Частичная функция с пустой областью определения. Любая попытка вызвать пустую частичную функцию приводит к выбрасыванию исключения scala.MatchError.

С версии

2.10

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

returns

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

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

def equals(arg0: AnyRef): Boolean

Метод равенства для ссылочных типов. Реализация по умолчанию делегирует eq.

См. также equals в scala.Any.

returns

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

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

def finalize(): Unit

Вызывается сборщиком мусора для принимающего объекта, когда больше нет ссылок на объект.

Подробности о том, когда и вызывается ли метод finalize, а также взаимодействие между finalize и нелокальными возвратами и исключениями, зависят от платформы.

Атрибуты
protected[java.lang]
Определяющие классы
AnyRef
Аннотации
@throws(classOf[java.lang.Throwable])
Примечание

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

def fromFunction[A, B](f: (A) => B): PartialFunction[A, B]

Преобразует обычную функцию в частичную функцию. Обратите внимание, что вызов isDefinedAt(x) для этой частичной функции вернет true для каждого x.

f

обычная функция

returns

частичная функция, которая делегирует обычной функции f

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

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

returns

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

Определяющие классы
AnyRef → Any
Аннотации
@native()

def hashCode(): Int

Метод hashCode для ссылочных типов. См. hashCode в scala.Any.

returns

хеш-код для этого объекта.

Определяющие классы
AnyRef → Any
Аннотации
@native()

final def isInstanceOf[T0]: Boolean

Проверяет, является ли динамический тип принимающего объекта T0.

Обратите внимание, что результат теста зависит от семантики стирания типов Scala. Поэтому выражение 1.isInstanceOf[String] вернет false, а выражение List(1).isInstanceOf[List[String]] вернет true. Во втором примере, поскольку тип аргумента стирается во время компиляции, невозможно проверить, являются ли содержимые списка указанного типа.

returns

true если принимающий объект является экземпляром стирания типа T0; false в противном случае.

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

final def ne(arg0: AnyRef): Boolean

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

returns

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

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

final def notify(): Unit

Будит один поток, ожидающий на мониторе принимающего объекта.

Определяющие классы
AnyRef
Аннотации
@native()
Примечание

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

final def notifyAll(): Unit

Будит все потоки, ожидающие на мониторе принимающего объекта.

Определяющие классы
AnyRef
Аннотации
@native()
Примечание

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

final def synchronized[T0](arg0: => T0): T0

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

def toString(): String

Создает строковое представление этого объекта. Представление по умолчанию зависит от платформы. На платформе Java это конкатенация имени класса, "@", и хэш-кода объекта в шестнадцатеричном формате.

returns

строковое представление объекта.

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

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

© 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/PartialFunction$.html

Spec-Zone.ru

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