gpt4 book ai didi

scala - Scala 中的多选项类型

转载 作者:行者123 更新时间:2023-12-04 16:48:20 25 4
gpt4 key购买 nike

如何存档一种返回 T 类型或 Error 类型的 Option 类型?

我正在执行一些 Web 请求,并且响应要么“正常”并包含对象,要么调用返回错误,在这种情况下,我想提供一个包含错误原因的 Error 对象。

所以像:

def myRequest() : Result[MyObject] {
if (thereWasAnError) Error(reason) else MyObject
}

最佳答案

scala.Either
Either 类型应该正是你想要的:

def myRequest() : Either[String, MyObject] = 
if (thereWasAnError)
Left("Some error message")
else
Right(new MyObject)
Either类似于 Option但可以容纳两个可能值之一:左或右。按照惯例,右边是可以的,而左边是错误的。

你现在可以做一些花哨的模式匹配:
myRequest() match {
case Right(myObject) =>
//...
case Left(errorMsg) =>
//...
}
scala.Option.toRight()
同样,您可以使用 Option并将其翻译为 Either .由于通常 *right* values is used for success and left for failure, I suggest using toRight() rather than toLeft()`:
def myRequest() : Option[MyObject] =
if (thereWasAnError)
None
else
Some(new MyObject)

val result: Either[String, MyObject] = myRequest() toRight "Some error message"

然而返回 Either直接导致 myRequest()在这个简单的例子中似乎更直接。

关于scala - Scala 中的多选项类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10784942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com