- , ?
, . , .
, Scala, - . "" Option[T], Future[T], Try[T], Either[A, B] ( . Monad Transformers).
, Option[T] . , , Option[Int], , , return -1. :
val option: Option[Int] = generateOptionValue
var res: Int = if (option.isDefined) {
val value = option.get
if (value > 40) value * 2 else -1
} else -1
Option, :
val result: Int = option
.filter(_ > 40)
.map(_ * 2)
.getOrElse(-1)
. , , . , . , , .
try-catch:
var result: String = _
try {
val maybeResult = dangerousMethod()
if (maybeResult.isDefined) {
result = queryDatabase(maybeResult.get)
} else result = ""
}
catch {
case NonFatal(e) => result = ""
}
scala.util.Try Option[String] :
val result: String = Try(dangerousMethod())
.toOption
.flatten
.map(queryDatabase)
.getOrElse("")
, , . Option[T].map, Option[T].get .
, , . , , , , . , , , , , , .