【问题标题】:Simple example of Either, Left, Right with scalaz使用scalaz的Either,Left,Right的简单示例
【发布时间】:2017-04-07 20:07:49
【问题描述】:

如何使用scalaz 实现这样的事情?示例取自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}")
    }
  }
}

【问题讨论】:

    标签: scala scalaz


    【解决方案1】:
    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}")
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-10-09
      • 2021-01-18
      • 2021-11-12
      • 2014-08-05
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多