options in scala

10
Options in Scala A quick tour

Upload: robbie-clutton

Post on 25-May-2015

222 views

Category:

Documents


0 download

DESCRIPTION

A quick tour of Options in Scala.

TRANSCRIPT

Page 1: Options in scala

Options in Scala

A quick tour

Page 2: Options in scala

Option[Introduction]

An Option represents an optional value through either:

• An instance of Some[Type]• The object None

An option can be typed by:

• Option[Type]

Page 3: Options in scala

Option[Inheritance]

 

Page 4: Options in scala

Option[Null] 

Options allow for null checking, but this misses the point and conciseness. 

val optionalValue = Some[3]

val value = if (optionalValue.isDefined)    optionalValue.get

Options give more than preventing NullPointerExceptions.

Page 5: Options in scala

Option[PatternMatching]

A more interesting, but still not quite idiomatic approach is pattern matching:

val optionalValue = Some[3]

optionalValue match {    case Some(number) => // its a number!    case _ => // anything else}

Page 6: Options in scala

Option[Default]

val optionalValue = Some[3]

val value = optionalValue getOrElse 0

Page 7: Options in scala

Option[Idiomatic]

Option[+A] can be considered to be a subtype of Traversable with either one or zero elements.

This allows use of collection based functions like map and filter.

 

Page 8: Options in scala

Option[Transformations]

val personOpt: Option[Person] = findPerson()

val deptNameOption: Option[String] =     personOpt map { _.department } map { _.name }

val deptName = deptNameOption getOrElse ""

Page 9: Options in scala

Option[ListComprehension]

val personOption: Option[Person] = findPerson()

val deptNameOption = for {    person <- personOption    department <- person.department    name <- department.name if name != "Engineering"} yield name

val deptName = deptNameOption getOrElse ""

Page 10: Options in scala

List[Question]