■ はじめに
https://dk521123.hatenablog.com/entry/2023/03/09/000000
で、Scala の Option型をやったが、 今回は、Either型 について扱う。
目次
【1】Either型 1)Left/Rightの使い分け 【2】サンプル 例1:With getOrElse 例2:With foreach 例3:With map
【1】Either型
* LeftとRightの2つの値が存在するデータ型
1)Left/Rightの使い分け
* 慣例としては、以下の通り。 + Right(右):正しい値(「Right=正しい」とかけているらしい) + Left(左):エラー/例外
【2】サンプル
例1:With getOrElse
package dk.com object Demo { def main(args: Array[String]): Unit = { val result1 = divide(4, 2) print(s"result1 = ${result1.getOrElse(0)} ") // result1 = 2 val result2 = divide(4, 0) print(s"result2 = ${result2.getOrElse(0)}") // result2 = 0 (データがないから、Elseの0が出力) } def divide(x: Int, y: Int): Either[Exception, Int] = { try { Right(x/y) } catch { case ex: Exception => Left(ex) } } }
例2:With foreach
object Demo { def main(args: Array[String]): Unit = { val right : Either[String, Int] = Right(1) right.foreach(println) // 100 val left : Either[String, Int] = Left("Error") left.foreach(println) // 何もしない(空文字すら) } }
例3:With map
object Demo { def main(args: Array[String]): Unit = { val right : Either[String, Int] = Right(1) println(right.map(_ * 2 )) // Right(2) val left : Either[String, Int] = Left("Error") println(left.map(_ * 2 )) // Left(Error) } }
参考文献
https://bbh.bz/2020/10/19/scala-either-sample/
https://kazchimo.com/2021/04/04/scalaapi-either/
関連記事
Scala ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/03/10/193805
Scala ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/12/184331
Scala ~ 基本編 / 文字列 ~
https://dk521123.hatenablog.com/entry/2023/01/07/000000
Scala ~ 基本編 / Option型 ~
https://dk521123.hatenablog.com/entry/2023/03/09/000000
Scala ~ 基本編 / 例外処理 ~
https://dk521123.hatenablog.com/entry/2023/10/05/000135
Scala ~ 基本編 / パターンマッチング ~
https://dk521123.hatenablog.com/entry/2023/06/06/233614