PartialFunction

A few handy operations which leverage the extra bit of information available in partial functions. Examples:

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 }
class Object
trait Matchable
class Any

Type members

Classlikes

final class ElementWiseExtractor[-A, +B] extends AnyVal

Value members

Concrete methods

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

Creates a Boolean test based on a value and a partial function. It behaves like a 'match' statement with an implied 'case _ => false' following the supplied cases.

Value Params
pf

the partial function

x

the value to test

Returns

true, iff x is in the domain of pf and pf(x) == true.

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

Transforms a PartialFunction[T, U] pf into Function1[T, Option[U]] f whose result is Some(x) if the argument is in pf's domain and None otherwise, and applies it to the value x. In effect, it is a match statement which wraps all case results in Some(_) and adds case _ => None to the end.

Value Params
pf

the PartialFunction[T, U]

x

the value to test

Returns

Some(pf(x)) if pf isDefinedAt x, None otherwise.

Source
PartialFunction.scala
def empty[A, B]: PartialFunction[A, B]

The partial function with empty domain. Any attempt to invoke empty partial function leads to throwing scala.MatchError exception.

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

Converts an ordinary function to a partial function. Note that calling isDefinedAt(x) on this partial function will return true for every x.

Value Params
f

an ordinary function

Returns

a partial function which delegates to the ordinary function f

Source
PartialFunction.scala