def common[T<:Equals](a: T, b: T): Option[T] = {
if(a == b) Some(a) else None
}
def common[T<:AnyVal](a: T, b: T): Option[T] = {
if(a == b) Some(a) else None
}
scala.collection.breakOut
Seq(Some("a"), Some("b"), None) flatMap identity[Option[String]]
val maybeName = Some("bob")
if(maybeName.isDefined) maybeName.get else "N/A"
// vs:
maybeName match {
case Some(name) => name
case None => "N/A"
}
// vs:
maybeName getOrElse "N/A"