generated at
ScalaのOption, Either, Try
from Scala



Option[T]
Some[T] もしくは None を返す
Option[A] は抽象クラスで、これを継承した Some[T] クラス、 None オブジェクト
method
isDefined
get
Noneのときは例外を投げる
scala
// map系メソッドとmatchの比較 option.foreach(f) option match { case Some(v) => f(v) case None => // 何もしない } option.map(f) option match { case Some(v) => Some(f(v)) case None => None } option.flatMap(f) option match { case Some(v) => f(v) case None => None } otpion.getOrElse(defaultValue) option match { case Some(v) => v case None => defaultValue }
scala
// 引数が両方SomeならSomeが返る。片方でもNoneならNoneが返る def plus(n1: Option[Int], n2: Option[Int]): Option[Int] = n1.flatMap(i => n2.map(j => i+j))
入れ子になって微妙に見づらいなmrsekut
for..yield式を使ってこんなふうにもかける
scala
def plus(n1: Option[Int], n2: Option[Int]): Option[Int] = for(i <- n1; j <- n2) yield i + j
forの中の i<-n1 のところで、モナドから値を取り出している感じ


Either[A, B]
Left[A, B] もしくは Right[A, B] を返す
Optionのときと同様のmethodに加えて、mergeなどがある
scala
either.merge eiteher match { case Right(v) => v case Left(v) => v }


Try
Eitherと似ているが失敗時には例外を保持する
非同期処理の try/catch では例外を捕捉できない
Success もしくは Failure を返す
Optionのときと同じようなmethocを使える


参考