问题标签 [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.

0 投票
2 回答
1224 浏览

scala - Scala:具有参数化函数类型

应该Either使用参数化函数吗?

这让我感到惊讶 - 它适用于显式类型:

0 投票
3 回答
1500 浏览

scala - scala中的异常处理

我正在使用 Scala 开发一个应用程序。我正在尝试在应用程序中实现异常处理。我尝试使用Either来处理异常。对于简单的情况,处理异常似乎就足够了。但是,当我需要通过连接从多个表中获取结果时,异常处理会产生比解决更多的问题。我的应用程序结构解释如下:

对定义所有数据库交互操作的数据库操作使用存储库模式。例如,我有一个中央存储库,它定义了findAllfindByIdinsertdeleteupdateexists。我的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 添加示例代码:此示例非常接近我的要求。

但是使用上面的代码,我得到了编译错误。

0 投票
3 回答
8372 浏览

exception - Clojure 中的惯用错误处理

当我戴上 C 帽子时,我想也许惯用的 Clojure 只是做简单的事情并检查返回值。

当我戴上我的 Java 帽子(不情愿地,我必须补充一下)时,我对自己想,既然 Clojure 在 JVM 上运行,那么自然的方式必须是使用 JVM 异常。

当我戴上功能性帽子时,我在想一定有某种单子构造或线程宏可以以可组合的方式处理错误。

那么在 Clojure 程序中处理错误的惯用方法是什么?

0 投票
2 回答
393 浏览

haskell - 为什么 Either 派生 Show 但 Maybe 没有?

两者的文档EitherMaybe表明它们具有Show.

Either被定义为推导Show,简单地说:

然而,Maybe不:

既然它们是其中的一部分base并且非常相似,为什么不Maybe直接派生Show

另一个问题也可能是,它从哪里得到它的Show实例?

0 投票
2 回答
2777 浏览

scala - 过滤 Scala 列表中的失败

我有一个输入值列表

和一个函数

我将该函数应用于列表的每个元素,生成一个List[Either[Failure, Success]].

我想检查列表,如果任何值失败,则返回第一个失败,否则返回成功列表。

我使用了以下模式:

有没有更简洁的方式来表达这种模式?

有时,我必须通过另一个函数进一步处理成功,再次使用相同的模式。例如

  • 将 JSON 数组转换为 Scala 模型,如果任何 JSON 对象格式错误,则会失败。
  • 将模型写入数据库并在任何数据库更新失败时失败。
0 投票
0 回答
47 浏览

scala - 斯卡拉兹失魂落魄

我尝试转换Seq[\/[String,A]]\/[String,Seq[A]]

经过一番研究,找到了 sequenceU 方法。但我无法使用它,我认为是由于进口不良。

也许我没有导入隐式Traversable as Applicative

编译器错误消息是

0 投票
3 回答
331 浏览

php - 正则表达式挑战 - 要么 ... 要么

我一直无法弄清楚这一点。

我需要通过匹配whole及其周围的下划线来匹配所有这些字符串(在一个正则表达式中):

  1. whole_anything
  2. anything_whole
  3. anything_whole_anything

但它不能匹配这个

  1. anythingwholeanything
  2. anything_wholeanything
  3. anythingwhole_anything

这意味着......制作一个正则表达式语句,whole只有当它之前,之后或两者都有下划线时才匹配短语。如果没有下划线,则不会。

以下

不是解决方案;)

2015/02/09 编辑:添加条件 5. 和 6. 以进行澄清

0 投票
2 回答
138 浏览

scala - 我怎样才能模拟Either?

编译器在 Left(e) 处抱怨:Left(List[ServiceError, Nothing]) 类型的表达式不符合预期的类型 Either[E , R]

我的要求解释如下,

所以...我有一个特质ServiceError。后端的每个服务都有自己的错误,这些错误扩展了这个特性。例如,当我从休息层发出请求时,

我想要一个像 Either[A,B] 这样的类型,但有一些额外的约束。如果服务器上出现错误(或错误),请返回List[ServiceError]或返回一些result

0 投票
1 回答
245 浏览

java - 我如何在 Java8 中进行 monadicaly 编程,同时获得可比的性能?

Java 8 中的一元编程是否更慢?下面是我的测试(使用偏右的 Either 为每个计算创建新实例)。命令式版本快 1000 倍。我如何在 Java8 中进行 monadicaly 编程,同时获得可比的性能?

主.java

要么.java

0 投票
1 回答
45 浏览

scala - 短路函数列表返回\/

所以我有一个使用这个签名的昂贵方法

我正在尝试遍历参数列表并返回\/[String, List[Int]],但只要方法返回就停止循环-\/

我想出了这个:

这里是什么G[_],正确的结果类型是foldLeftM什么?