问题标签 [flatmap]

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

java - RxJava 中的 concatMap 和 flatMap 有什么区别

看起来这两个功能非常相似。它们具有相同的签名(接受rx.functions.Func1<? super T, ? extends Observable<? extends R>> func),并且它们的大理石图看起来完全相同。无法在此处粘贴图片,但这是concatMap的一张,这是flatMap的一张。对 results的描述似乎存在一些细微的差别Observable,其中一个由concatMapcontains 产生的项是由连接结果 Observables 产生的,而一个由flatMapcontains 产生的项是由首先合并产生的 Observables 并发出该合并的结果而产生的。

但是,我完全不清楚这种微妙之处。谁能更好地解释这种差异,最好举一些例子来说明这种差异。

0 投票
1 回答
120 浏览

javascript - 如何在 flatMap 之后记忆值以使用它?

回调中需要user对象onValue

0 投票
3 回答
2840 浏览

scala - 地图上的 FlatmapValues

给定一个Seq元组,例如:

我想groupBy然后flatMap获得类似的值:

我的第一个实现是:

我想知道是否有一种更有效、可能更简单的方法来实现这一结果。

0 投票
1 回答
273 浏览

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

鉴于此 Scala 代码

然后将其翻译成这个以便理解:

我的问题是如何在 Clojure 中将此地图/平面地图转换为理解?

假设:

  • 如果可能的话,我想使用惯用的 Clojure(即mapcat)来表示这个而不是algo.monads/fluokitten库。但是,如果这是最好的方法(我愿意学习),那就使用它。
0 投票
1 回答
718 浏览

scala - 如何为 Option 实现 flatMap

我正在尝试实现mapandflatMap作为 的扩展/丰富Option,而不作弊并查看它是如何在 Scalaz 中实现的。

所以这是我在卡住之前得到的:

我真正需要的是基本功能,所以我可以做这样的事情:

有什么提示吗?

0 投票
1 回答
175 浏览

map - flatmap/mapcat 是不是可以作为其他高阶函数基础的函数?

我们可以看到我们可以使用reduce/foldl1作为函数,通过它我们可以定义其他高阶函数,例如 map、filter 和 reverse

我们似乎也能够做到这一点foldr。这里是来自Rich Hickey在 17:25map的Transducers 演讲。filterfoldr

现在事实证明,有一些论文可以解释这一点:

BIRD - 构造函数式编程讲座 - 1988 https://www.cs.ox.ac.uk/files/3390/PRG69.pdf

HUTTON - 关于 fold 的普遍性和表现力的教程 - 1999 http://www.cs.nott.ac.uk/~gmh/fold.pdf

这周我听到有人说:

Well flatmap( mapcat) 是基本的——你可以用它来表达很多高阶函数。

所以这里是map按照mapcat来实现的。

但对我来说,这感觉很不自然,因为您实际上只是在打量事物并确定地图本身是否是“基本的”。

最后一个例子感觉有点人为的原因是 mapcat 已经根据 map 进行了定义。如果您查看mapcat 的源代码- 我们会看到类似以下内容:

所以上面的例子只是颠倒了 concat 并重用了 mapcat 内部的 map 的底层定义——这对我来说是人为的。现在如果可以使用 mapcat 来定义其他 HOF 就可以了——但我不知道该怎么做——我希望有人能指出我的方向。

我的问题是:flatmap/mapcat 是一个可以用作其他高阶函数基础的函数吗?

0 投票
1 回答
7301 浏览

java - Java 8 Optional 和 flatMap - 有什么问题?

一些代码:

为什么我不能这样做?在 flatMap 方法中,我收到错误“类型不匹配:无法从列表转换为可选”

我的目标是:

  1. 如果 optional 存在,我想根据这个可选对象属性获取项目列表

  2. 如果 optional 不存在,我想返回空列表

0 投票
1 回答
2329 浏览

scala - flatten 函数中使用的模式匹配中 List[_] 的解释

我是 scala 新手,我无法理解以下功能

特别是我不明白flatMap和模式匹配的组合以及第一种情况的含义ms:List[_]

有人可以解释一下,也许可以提供一个更简单的例子来澄清这个概念吗?

0 投票
2 回答
6810 浏览

java - Java 8 flatMap + Optional.of 无法编译

我正在尝试使用flatMap OptionalJava。这是一个简化的示例:

我从编译器收到此错误消息:

怎么了?这是我在 Scala 中尝试实现的示例:

它返回:

正如预期的那样。

如何将其转换为 Java 以便编译?

0 投票
2 回答
2867 浏览

scala - Scala Future, flatMap 适用于 Either

真的有办法将 Future[Either[Future[T1], Future[T2]]] 类型的对象转换为 Either[Future[T1], Future[T2]] 类型的对象吗?

也许类似 flatMap 的东西适用于 Either....

我正在尝试使此代码正常工作(我有类似的代码可以实现包装的动作链,但它不涉及未来。它可以工作,更简单)。下面的代码基于此,并进行了必要的修改以使其适用于涉及期货的情况。


更新更新更新

根据下面 Didier 的评论(Scala Future, flatMap that works on Either)......这是一个有效的代码:

谢谢,拉卡