either相关内容
假设我需要在 Scala 中将 Option[Int] 转换为 Either[String, Int].我想这样做: def foo(ox: Option[Int]): Either[String, Int] =ox.fold(Left("No number")) {x =>右(x)} 不幸的是,上面的代码无法编译,我需要明确添加类型 Either[String, Int]: ox.fold
..
Option monad 是一种很好的表达方式,可以在 Scala 中处理有或无的事情.但是,如果在“无事发生"时需要记录一条消息怎么办?根据 Scala API 文档, Either 类型通常用作替代 scala.Option where Left代表失败(按照惯例)和Right 类似于 Some. 但是,我没有运气找到使用“任何"或涉及“任何"的真实世界示例来处理失败的最佳实践.最
..
我正在尝试验证方法的参数是否为空,但我没有找到解决方案... 谁能告诉我怎么做? 我正在尝试这样的事情: def buildNormalCategory(user: User, parent: Category, name: String, description: String): Each[Error,Category] = {val 错误:Option[String] =
..
我从一些人那里听说在 Scala 中我们倾向于(像其他函数式语言一样)不破坏控制流......相反,按照惯例,我们在 Either Left. 但是我们如何从该异常中获取 stracktrace 呢?现在我在左边返回一个简单的 Error 案例类,带有代码、消息和原因(Error 也是).但是如果我有错误,我就无法获得堆栈跟踪.如果我的应用程序变得复杂,可能很难找到返回那个 Error 的代
..
我想知道我的方法的签名应该是什么,以便我优雅地处理不同类型的失败. 这个问题在某种程度上是我对 Scala 中的错误处理的许多问题的总结.您可以在这里找到一些问题: Scala 抛出异常,什么是“官方"规则" 无论是选项还是理解 任一单子操作 现在,我明白以下几点: 两者都可以用作可能失败的方法调用的结果包装器 Try 是一个 Right biaised任一,失败是一
..
我知道现在很难在不破坏现有代码的情况下进行更改,但我想知道为什么首先要这样做. 为什么不只是: 密封特性Either[+A, +B]case class Left[A](x: A) 扩展Either[A, Nothing]case class Right[B](x: B) 扩展Either[Nothing, B] 这里有什么我看不到的缺点吗...? 解决方案 不确定这个答案与 S
..
这可能是一个非常基本的 Haskell 问题,但让我们假设以下函数签名 -- 辅助函数getWeatherInfo :: 天 ->IO (WeatherException WeatherInfo)工艺查询 :: WeatherInfo ->QueryException ModelQuerymakePrediction :: ModelQuery ->IO (ModelException Mode
..
我尝试使用 Applicatives 和 Either Monad 验证 Record 的构造.它工作正常.但是我看不到所有错误消息.只有第一个可见,因为任一Monad 的 Right 路径都会忽略它们. 这是我的代码: 导入数据.导入Text.Printf(printf)数据记录=记录{fieldA ::字符串,fieldB ::字符串,fieldC ::字符串派生(Show,Eq)类型
..
我正在编写一个小型Scala程序,该程序应该: 从本地FS逐行读取文件 从每一行中解析三个双精度值 根据这三个值创建案例类的实例 将这些实例传递到二进制堆 为了能够将String解析为Double和CoordinatePoint,我想出了以下特征: trait Parseable[T] { def parse(input: String): Either[String,
..
我有一个通过Either处理错误的函数: funErrViaEither :: a -> Either SomeException b 我想在另一个应该更灵活并返回MonadThrow m的函数中使用此函数: funErrViaThrow :: MonadThrow m => a -> m b funErrViaThrow x = if x = someCondition
..
我编写了以下简单代码: import cats.effect.IO import cats.instances.either._ import cats.syntax.TraverseSyntax object Test extends App with TraverseSyntax{ val e: Either[String, IO[Int]] = Right(IO(2)) e.
..
我目前正在R中的LPsolveAPI中编写MIP.该程序本身很简单,但是我无法找到一种写或非约束的方法,而不能直接调用新的二进制变量或二进制值在lhs上. LPsolveAPI是否不支持此功能,或者我是否缺少明显的功能? 解决方案 使用新的二进制变量是在lp_solve中建模“或"或“约束"的标准方法. ( LpSolveAPI 基于也就是说,根据您的限制,可能会帮助您的一件事是使用SOS
..
假设我需要调用远程JSON/HTTP服务.我发出一个JSON请求,通过HTTP将其发送到服务器,然后接收并解析JSON响应. 假设我的数据类型为MyError,并且我的所有函数都返回Either[MyError, R] type Result[A] = Either[MyError, A] def makeJsonRequest(requestData: RequestDat
..
稍微简化一下,我的问题来自要使用返回Either[String,Int]的函数parse解析的字符串input的列表. 然后list.map(parse)返回Either的列表.该程序的下一步是格式化一条错误消息,该错误消息汇总在解析的整数列表中传递的所有错误或. 让我们来寻找我正在寻找的解决方案partitionEithers. 通话 partitionEithers(L
..
我有一个Either列表,表示错误: type ErrorType = List[String] type FailFast[A] = Either[ErrorType, A] import cats.syntax.either._ val l = List(1.asRight[ErrorType], 5.asRight[ErrorType]) 如果它们都正确,我想获得[A]的列表,在
..
遍历Typeclassopedia以获得使用类型类的一些路由.想要替代Either的Functor实例,但是即使将Either的定义作为Functor的实例进行检查,也总是给我带来麻烦. 有这个,但是不会编译. data Alt a b = Success a | Failure b deriving (Show, Eq, Ord) instance Functor (Alt a) wh
..
我刚刚开始习惯于处理单子运算. 对于期权类型,托尼·莫里斯的备忘单有助于: http://blog.tmorris.net/posts/scalaoption-cheat-sheet/ 所以最后似乎很容易理解: 地图可转换选项内部的值 flatten允许在Option[X] 中转换Option[Option[X]] flatMap是一种映射操作,它生成一个Option[Option
..
我有一个Either[Future[A], Future[B]]的实例,我想将其转换为Future[Either[A, B]]. 由于我之前的问题,因此,先前接受的答案中描述的方法不再起作用.我试图找到合适的进口货,但失败了. cats.instances.either._ cats.implicits._ cats.syntax.bitraverse._ 看起来很合理,但不幸的
..
是否可以以与Option类似的方式处理Either?在Option中,我有一个getOrElse函数,在Either中,我想返回Left或处理Right.我正在寻找没有任何样板的最快方法: val myEither:Either[String, Object] = Right(new Object()) myEither match { case Left(leftValue) =>
..
我正在寻找从返回类型Either的方法中轻松提取值的方法. 我正在做一些测试,但是无法轻松测试我的方法的返回. 例如: final Either result = await repository.getToken(...); 为了测试,我能够做到 expect(result
..