page contents

Option ,Try 和 Either 三者的区别?

轩辕小不懂 发布于 2021-09-07 15:03
阅读 540
收藏 0
分类:资源下载
1874
Nen
Nen
- 程序员

这三种monads允许我们显示函数没有按预期执行的计算结果。

Option表示可选值,它的返回类型是Some(代表返回有效数据)或None(代表返回空值)。

Try类似于Java中的try/catch,如果计算成功,返回Success的实例,如果抛出异常,返回Failure。

Either可以提供一些计算失败的信息,Either有两种可能返回类型:预期/正确/成功的 和 错误的信息。


代码示例:

//返回一个Either类型

def personAge(id: Int): Either[String, Int] = {

  val personOpt: Option[Person] = DB.getPersonById(id) //返回Option类型,如果为null返回None,否则返回Some

personOpt match {

    case None => Left(s"Could not get person with id: $id")  //Left 包含错误或无效值

    case Some(person) => Right(person.age)                    //Right包含正确或有效值

  }

请先 登录 后评论