简体   繁体   English

标量的左,右,右的简单示例

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM