パターンマッチ
case class Point(x: Int, y: Int)
object MyApp {
def main(args: Array[String]): Unit = {
var points = List(
Point(5, 3),
Point(0, 0),
Point(3, 4)
)
points.foreach(_ match{
case Point(0, 0) => println("original")
case Point(5, _) => println("right edge")
case Point(x, y) => println(s"$x:$y")
})
}
}
option型のエラー処理
object MyApp {
def main(args: Array[String]): Unit = {
val scores = Map("yoshimoto" -> 55, "kimoto" -> 65)
scores.get("tanaka") match {
case Some(v) => println(v)
case None => println("key not found")
}
}
}
Eitherによるエラー処理
object MyApp {
// Error Either - right, left
def div(a: Int, b: Int): Either[String, Int] = {
if (b == 0) Left("Zero div error!")
else Right(a / b)
}
def main(args: Array[String]): Unit = {
div(10, 2) match {
case Right(n) => println(n)
case Left(s) => println(s)
}
}
}