Option型とEither型について
両方とも例外が発生しうる状況において使える型になります。Option型は例外の有無(SomeかNone)をEither型は例外の有無に加え詳細(RightかLeft)を伝えることがそれぞれ可能です。Either型では正しいという意味のrightとRightをかけてRightに正しい方向に進んだ時の処理を書くみたいです。
例
入力された文字列にスペースが含まれていないか確かめる。
OptionEither.scala
object OptionEither {
def main(args: Array[String]): Unit = {
println("Please enter word.")
val word = scala.io.StdIn.readLine
validateByOption(word)
validateByEither(word)
}
def validateByOption(word: String): Option[String] = {
word.contains(' ') match {
case true => None
case false => Some(word)
}
}
def validateByEither(word: String): Either[String, String] = {
word.contains(' ') match {
case true => Left("Error The Word Contains Space")
case false => Right(word)
}
}
}
追記
コメント欄にてSomeは成功した場合の意味合いがあるとご指摘いただきましたので編集させていただきました、ありがとうございます。