Scala partial function literal

In Scala there’s no literal for partial function types. You have to give the exact signature of the PartialFunction

val pf: PartialFunction[Double, Double] = { case x if x >= 0 => Math.sqrt(x) }
view raw gistfile1.scala hosted with ❤ by GitHub

Though I personally prefer to use type ascription bacause you can define and lift in the same place if needed.

val pf = { case x if x >= 0 => Math.sqrt(x) } : PartialFunction[Double, Double]
view raw gistfile1.scala hosted with ❤ by GitHub

It’s unwieldy, but I’ve learned to live with it.

But lately someone (can’t remember who – sorry!) told me that you don’t need a literal because you can write your own type alias and use it with infix operator concise syntax.

type :=>[A, B] = PartialFunction[A, B]
val pf: Double :=> Double = { case x if x >= 0 => Math.sqrt(x) }
view raw gistfile1.scala hosted with ❤ by GitHub

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie na Google

Komentujesz korzystając z konta Google. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s