问题标签 [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 投票
2 回答
263 浏览

scala - 对于地图查找的理解 - 有没有更好的方法?

考虑以下

我想遍历可能的键,如果地图包含一个,则遍历地图的值

我想出的选项是:

带过滤器

getOrElse

(两者都返回相同的结果:)

因为我知道 Scala 支持理解中的选项,所以我有点惊讶这不起作用

它抱怨type mismatch; found : List[Int] required: Int

我隐约明白为什么,但是有没有办法在没有if条款或getOrElse方法的情况下完成这项工作?(例如,有没有办法让myMap.get(key)版本工作?)

0 投票
4 回答
559 浏览

scala - 反省理解

如何做 Scala 等价于这个 Java 代码:

0 投票
2 回答
328 浏览

scala - Scala 用于理解类型推断

下一个代码

给出错误信息

请帮助我理解为什么'for'在这里选择最通用的 Any 而不是 Char ?我应该阅读语言规范中的哪些主题?谢谢。

0 投票
3 回答
1932 浏览

scala - 在 Scala 中使用 for 理解

你好,

我在上面的代码片段中找不到任何缺陷,但它仍然给我 List() 任何输入。

0 投票
2 回答
7163 浏览

scala - Scala for/yield 的返回类型

我正在为不耐烦的人阅读Scala,我遇到了一些让我摸不着头脑的东西。

以下返回一个字符串:

但这会返回一个向量:

这两个例子前面的文字是……

“当for循环的主体以yield开头时,然后循环构造一个值的集合,每次迭代一个......这种类型的循环称为for理解。生成的集合与第一个生成器兼容。

如果生成的集合与第一个生成器兼容,那么为什么第二个示例不返回 Range 类型,如下所示:

还是我完全误解了文本的含义,“......生成的集合与第一个生成器兼容”。

0 投票
1 回答
201 浏览

scala - 如何表达 [42 | x == y] 与 for 理解?

我有一些代码在其中生成多个列表(通过理解),然后将它们连接起来。但是,有些单元素列表不起作用。在 Haskell 我会做类似的事情

等效地是

或者

在斯卡拉我试过

但它说“简单模式的非法开始”。

在回答 Scala 的产量是什么时,作者说“Scala 的“for comprehensions”等同于 Haskell 的“do”notation”。

此外,在Scala 网站上,它说“理解具有(enums) yield e的形式,其中 enums 是指以分号分隔的枚举器列表。枚举器要么是引入新变量的生成器,要么是过滤器”。但显然,情况并非如此,因为过滤器似乎只允许生成器之后使用。

目前我使用

对于这种特殊情况,我可能不喜欢 for 理解语法,而只使用 if-then-else 代替。在 Haskell 中,由于与数学集合构建符号的相似性,它看起来相当不错。

我的问题不是关于风格,而是更多关于技术细节:为什么在 Haskell 和 Scala 之间的这个特定案例中存在差异?为什么不for (if i == j) yield 42工作?

0 投票
1 回答
436 浏览

scala - Scala 用于理解和 flatMap / map 中间结果

从我第一次读到:

翻译为:

我担心filter, flatMap&返回的不必要的中间集合map。第一个是通过添加withFilter方法在 Scala 2.8(?) 中修复的,我怀疑有一些魔术会根据使用情况改变这些方法的返回类型,因此当用作参数时,flatMap它们会返回非严格集合,但我找不到任何证据。我的怀疑是正确的,它并不像乍一看那样无效吗?

0 投票
4 回答
884 浏览

scala - 使用 4 个(或 N 个)集合一次只产生一个值(1xN)(即压缩为 tuple4+)

现在:

我在其他地方搜索过这个,包括这个这个,但没有确定的答案。

我想做以下或类似的事情:

有什么建议么?

0 投票
3 回答
961 浏览

scala - 具有唯一数字的所有 N 位长数字的列表

我正在尝试构建具有唯一数字的所有 N 位长数字的列表,但我无法弄清楚如何将其概括为更大问题的一部分,为此我需要所有(1 到 N ) 具有唯一数字的长数字。

这是 n = 4 的手写代码:

0 投票
1 回答
560 浏览

scala - Scala 2.10.1 中的新脱糖行为

假设我有这个单子类:

以下来自 2.10.0 REPL 会话:

这是 2.10.1 中的相同内容:

这完全出乎我的意料(对我而言),并且在过滤需要额外约束(例如 Scalaz\/EitherT)的情况下会导致特别令人困惑的错误。

我无法在2.10.1 发行说明中找到有关此更改的任何讨论。有人能指出这种新的脱糖行为是在哪里以及为什么引入的吗?