问题标签 [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.
validation - 通过理解线程化`Try`s
由另一个问题触发(尽管随后已被编辑掉),我想尝试使用 for-comprehensions将调用链接到 Scala 2.10 的Try
构造(参见此演示文稿)是多么容易。
这个想法是有一个标记列表并将它们与一系列模式匹配,然后返回第一个错误或成功匹配的模式。我得到了以下非常尴尬的版本,我想知道这是否可以变得更简单更好:
现在构建期望Keyword("void") :: Ident(id) :: Punct("(") :: Punct(")") :: tail
构建一个完整的测试用例:
下面验证测试方法:
现在特别是附加flatMap
和map
输入yield
似乎很可怕,以及需要调用head
for 理解的结果。
有任何想法吗?Try
非常不适合理解吗?不应该Either
或Try
“固定”以允许这种类型的线程(例如,允许Try
作为直接结果类型unapply
)?
scala - Scala 用于理解 unapplySeq
我有一个
我想在列表理解中使用它,例如:
但是当“rader”中的“rad”因为提取器返回而失败时,None
我得到一个MatchError
.
理解提取器不应该处理/忽略这些None
案例还是我只是错过了什么?
我可以做
但这不会那么性感;)谢谢
scala - Scala中的方法参数验证,用于理解和单子
我正在尝试验证无效方法的参数,但我没有找到解决方案......
有人可以告诉我该怎么做吗?
我正在尝试这样的事情:
clojure - Clojure 序列理解中是否存在变量?
我正在阅读 Programming Clojure 第 2 版,在第 49 页它涵盖了 Clojure 的 for 循环构造,它说这实际上是一个序列理解。
作者建议使用以下代码:
...比基于 Java 的命令式示例更可取,并且给出的证据是它“通过使用高阶函数...任何功能索引避免了对变量的所有需求。”
如果它们不是变量,什么是“idx”、“elt”?它们是指累加器以外的变量吗?
另外,为什么#{\a} 而不是“a”?
scala - 如何将此地图/平面地图转换为Scala中的理解?
如何将此地图/平面地图转换为理解,请解释它是如何工作的,谢谢。
scala - scala:如何使用 for comprehension 重写此函数
我有这段代码有几个讨厌的嵌套检查......
我很确定它可以用很好的理解来重写,但我对如何混合模式匹配的东西有点困惑
你能给我什么提示吗?
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.
scala - Scala:.take(1) 理解?
我可以在这里 .take(1) 吗?(我试图将它翻译成平面图、过滤器等,但由于我失败了,我想它无论如何都不会那么可读......)
scala - 如何在scala中缩短理解(打破它)?
我有一段代码,代码如下:
其中一些元素的条件为真,然后对所有剩余的元素变为假。
不幸的是,这不起作用(即使我忽略了性能),因为 myelements
是一个无限迭代器。
有没有办法在理解中使用“中断”,以便在满足特定条件时停止产生元素?否则,计算 my 的 scala 惯用方法是e2
什么?
scala - 如果过滤太多,Scala 的理解?
我有以下程序:(Scala 2.9.2,Java6)
它会产生这个输出:List((-1,-1), (-1,1), (1,-1), (1,1))
我本来希望它只过滤掉a
和b
都是0 的值 - 不是所有的值都是0或 0。a
b
我可以通过将 if 子句更改为以下内容来获得我想要的行为:if (a,b) != (0,0)
– 但是,我真的必须这样做吗?这是一个错误还是这是故意的行为?一方面,我对此感到惊讶。