问题标签 [either]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Scala:具有参数化函数类型
应该Either
使用参数化函数吗?
这让我感到惊讶 - 它适用于显式类型:
scala - scala中的异常处理
我正在使用 Scala 开发一个应用程序。我正在尝试在应用程序中实现异常处理。我尝试使用Either
来处理异常。对于简单的情况,处理异常似乎就足够了。但是,当我需要通过连接从多个表中获取结果时,异常处理会产生比解决更多的问题。我的应用程序结构解释如下:
对定义所有数据库交互操作的数据库操作使用存储库模式。例如,我有一个中央存储库,它定义了findAll
、findById
、insert
、delete
、update
等exists
。我的findAll
方法签名已更改为Either[CustomException, List[TEntity]]
,类似findById
的方法类型是Either[CustomException, Option[TEntity]]
。
现在假设,如果我需要在我的方法中从数据库中获取员工,我将执行如下操作:
现在车辆的Either[CustomException, Option[Vehicle]]
类型是,司机的类型是Either[CustomException, Employee]
如果我在得到结果后需要做更多的操作,我必须使用右/左大小写,然后再做。问题是,可能在 Right case 中,我可能需要加入另一个表,这使得结果再次成为Either[CustomException, Entity]
。如果该操作发生任何错误,我需要再次使用 try catch 块。我觉得当代码复杂度增加时,这种处理变得非常难以管理,而且我会有很多样板代码来处理这些情况,这违背了 Scala 原则本身。
所以我的问题是,如何在没有太多样板代码的情况下以更好的方式处理异常。
注意:我来自 Java 背景,现在只在 Scala 上工作了几个月。
编辑
使用 Try 添加示例代码:此示例非常接近我的要求。
但是使用上面的代码,我得到了编译错误。
exception - Clojure 中的惯用错误处理
当我戴上 C 帽子时,我想也许惯用的 Clojure 只是做简单的事情并检查返回值。
当我戴上我的 Java 帽子(不情愿地,我必须补充一下)时,我对自己想,既然 Clojure 在 JVM 上运行,那么自然的方式必须是使用 JVM 异常。
当我戴上功能性帽子时,我在想一定有某种单子构造或线程宏可以以可组合的方式处理错误。
那么在 Clojure 程序中处理错误的惯用方法是什么?
scala - 过滤 Scala 列表中的失败
我有一个输入值列表
和一个函数
我将该函数应用于列表的每个元素,生成一个List[Either[Failure, Success]]
.
我想检查列表,如果任何值失败,则返回第一个失败,否则返回成功列表。
我使用了以下模式:
和
有没有更简洁的方式来表达这种模式?
有时,我必须通过另一个函数进一步处理成功,再次使用相同的模式。例如
- 将 JSON 数组转换为 Scala 模型,如果任何 JSON 对象格式错误,则会失败。
- 将模型写入数据库并在任何数据库更新失败时失败。
scala - 斯卡拉兹失魂落魄
我尝试转换Seq[\/[String,A]]
为\/[String,Seq[A]]
经过一番研究,找到了 sequenceU 方法。但我无法使用它,我认为是由于进口不良。
也许我没有导入隐式Traversable as Applicative
编译器错误消息是
php - 正则表达式挑战 - 要么 ... 要么
我一直无法弄清楚这一点。
我需要通过匹配whole
及其周围的下划线来匹配所有这些字符串(在一个正则表达式中):
whole_anything
anything_whole
anything_whole_anything
但它不能匹配这个
anythingwholeanything
anything_wholeanything
anythingwhole_anything
这意味着......制作一个正则表达式语句,whole
只有当它之前,之后或两者都有下划线时才匹配短语。如果没有下划线,则不会。
以下
不是解决方案;)
2015/02/09 编辑:添加条件 5. 和 6. 以进行澄清
scala - 我怎样才能模拟Either?
编译器在 Left(e) 处抱怨:Left(List[ServiceError, Nothing]) 类型的表达式不符合预期的类型 Either[E , R]
我的要求解释如下,
所以...我有一个特质ServiceError
。后端的每个服务都有自己的错误,这些错误扩展了这个特性。例如,当我从休息层发出请求时,
我想要一个像 Either[A,B] 这样的类型,但有一些额外的约束。如果服务器上出现错误(或错误),请返回List[ServiceError]
或返回一些result
。
java - 我如何在 Java8 中进行 monadicaly 编程,同时获得可比的性能?
Java 8 中的一元编程是否更慢?下面是我的测试(使用偏右的 Either 为每个计算创建新实例)。命令式版本快 1000 倍。我如何在 Java8 中进行 monadicaly 编程,同时获得可比的性能?
主.java
要么.java
scala - 短路函数列表返回\/
所以我有一个使用这个签名的昂贵方法
我正在尝试遍历参数列表并返回\/[String, List[Int]]
,但只要方法返回就停止循环-\/
。
我想出了这个:
这里是什么G[_]
,正确的结果类型是foldLeftM
什么?