Scala中的多选项类型
发布时间:2020-12-16 18:44:50 所属栏目:安全 来源:网络整理
导读:如何归档一种返回类型为T或类型为Error的类型的Option类型? 我正在做一些Web请求,响应是“ok”并包含对象或调用返回错误,在这种情况下,我想提供一个错误原因的Error对象. 所以类似于: def myRequest() : Result[MyObject] { if (thereWasAnError) Error(re
如何归档一种返回类型为T或类型为Error的类型的Option类型?
我正在做一些Web请求,响应是“ok”并包含对象或调用返回错误,在这种情况下,我想提供一个错误原因的Error对象. 所以类似于: def myRequest() : Result[MyObject] { if (thereWasAnError) Error(reason) else MyObject } 解决方法
scala.Either
def myRequest() : Either[String,MyObject] = if (thereWasAnError) Left("Some error message") else Right(new MyObject) 要么类似于Option,要么可以保留两个可能值中的一个:left或right.按照惯例,右边是OK,而左边是错误. 你现在可以做一些奇特的模式匹配: myRequest() match { case Right(myObject) => //... case Left(errorMsg) => //... } scala.Option.toRight() 类似地,您可以使用Option并将其转换为Either.由于通常* right *值用于成功并留下失败,我建议使用toRight()而不是thantoLeft()`: def myRequest() : Option[MyObject] = if (thereWasAnError) None else Some(new MyObject) val result: Either[String,MyObject] = myRequest() toRight "Some error message" 但是,在这个简单的例子中,由于myRequest()直接返回Either似乎更直接. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |