[英]Simple example of Either, Left, Right with scalaz
How can something like this be implemented using scalaz
? 如何使用
scalaz
来实现scalaz
? Example taken from here 从这里取的例子
object MyObject {
def divideXByY(x: Int, y: Int): Either[String, Int] = {
if (y == 0) Left("Cannot divide by 0")
else Right(x / y)
}
def main(args: Array[String]) {
println(divideXByY(12, 3))
println(divideXByY(12, 0))
divideXByY(12, 3) match {
case Right(a) => println(s"We got: ${a}")
case Left(b) => println(s"We got: ${b}")
}
}
}
import scalaz.{-\/, \/, \/-}
object MyObject {
def divideXByY(x: Int, y: Int): Either[String, Int] = {
if (y == 0) Left("Cannot divide by 0")
else Right(x / y)
}
def divideXByYScalaz(x: Int, y: Int): \/[String, Int] = {
if (y == 0) -\/("Cannot divide by 0")
else \/-(x / y)
}
def main(args: Array[String]) {
println(divideXByY(12, 3))
println(divideXByY(12, 0))
divideXByY(12, 3) match {
case Right(a) => println(s"We got: ${a}")
case Left(b) => println(s"We got: ${b}")
}
println("Working with scalaz")
println(divideXByYScalaz(12, 3))
println(divideXByYScalaz(12, 0))
divideXByYScalaz(12, 3) match {
case -\/(a) => println(s"We got: ${a}")
case \/-(b) => println(s"We got: ${b}")
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.