问题标签 [for-comprehension]

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 投票
1 回答
235 浏览

validation - 通过理解线程化`Try`s

由另一个问题触发(尽管随后已被编辑掉),我想尝试使用 for-comprehensions将调用链接到 Scala 2.10 的Try构造(参见此演示文稿)是多么容易。

这个想法是有一个标记列表并将它们与一系列模式匹配,然后返回第一个错误或成功匹配的模式。我得到了以下非常尴尬的版本,我想知道这是否可以变得更简单更好:

现在构建期望Keyword("void") :: Ident(id) :: Punct("(") :: Punct(")") :: tail

构建一个完整的测试用例:

下面验证测试方法:

现在特别是附加flatMapmap输入yield似乎很可怕,以及需要调用headfor 理解的结果。

有任何想法吗?Try非常不适合理解吗?不应该EitherTry“固定”以允许这种类型的线程(例如,允许Try作为直接结果类型unapply)?

0 投票
1 回答
560 浏览

scala - Scala 用于理解 unapplySeq

我有一个

我想在列表理解中使用它,例如:

但是当“rader”中的“rad”因为提取器返回而失败时,None我得到一个MatchError.

理解提取器不应该处理/忽略这些None案例还是我只是错过了什么?

我可以做

但这不会那么性感;)谢谢

0 投票
4 回答
9152 浏览

scala - Scala中的方法参数验证,用于理解和单子

我正在尝试验证无效方法的参数,但我没有找到解决方案......

有人可以告诉我该怎么做吗?

我正在尝试这样的事情:

0 投票
2 回答
223 浏览

clojure - Clojure 序列理解中是否存在变量?

我正在阅读 Programming Clojure 第 2 版,在第 49 页它涵盖了 Clojure 的 for 循环构造,它说这实际上是一个序列理解。

作者建议使用以下代码:

...比基于 Java 的命令式示例更可取,并且给出的证据是它“通过使用高阶函数...任何功能索引避免了对变量的所有需求。”

如果它们不是变量,什么是“idx”、“elt”?它们是指累加器以外的变量吗?

另外,为什么#{\a} 而不是“a”?

0 投票
1 回答
10076 浏览

scala - 如何将此地图/平面地图转换为Scala中的理解?

如何将此地图/平面地图转换为理解,请解释它是如何工作的,谢谢。

0 投票
1 回答
229 浏览

scala - scala:如何使用 for comprehension 重写此函数

我有这段代码有几个讨厌的嵌套检查......

我很确定它可以用很好的理解来重写,但我对如何混合模式匹配的东西有点困惑

你能给我什么提示吗?

0 投票
2 回答
358 浏览

scala - Can you define a value (in a if) in a for comprehension in Scala for use in yield

Is it possible to define a value (in a if) in a for comprehension in Scala for use in yield.

I want to do this to avoid a potential expensive evaluation two times.

An example to illustrate.

0 投票
1 回答
585 浏览

scala - Scala:.take(1) 理解?

我可以在这里 .take(1) 吗?(我试图将它翻译成平面图、过滤器等,但由于我失败了,我想它无论如何都不会那么可读......)

0 投票
5 回答
7022 浏览

scala - 如何在scala中缩短理解(打破它)?

我有一段代码,代码如下:

其中一些元素的条件为真,然后对所有剩余的元素变为假。

不幸的是,这不起作用(即使我忽略了性能),因为 myelements是一个无限迭代器。

有没有办法在理解中使用“中断”,以便在满足特定条件时停止产生元素?否则,计算 my 的 scala 惯用方法是e2什么?

0 投票
1 回答
197 浏览

scala - 如果过滤太多,Scala 的理解?

我有以下程序:(Scala 2.9.2,Java6)

它会产生这个输出:List((-1,-1), (-1,1), (1,-1), (1,1)) 我本来希望它只过滤掉ab都是0 的值 - 不是所有的值都是0 0。ab

我可以通过将 if 子句更改为以下内容来获得我想要的行为:if (a,b) != (0,0)– 但是,我真的必须这样做吗?这是一个错误还是这是故意的行为?一方面,我对此感到惊讶。