在观看了使用 Akka 2.0 的 Composable Futures演示文稿后,我很想知道 Akka 的 Futures 和 Agents 实现带来了哪些额外的特性,而不是 Clojure 的特性。
问问题
716 次
1 回答
3
“Akka 中的代理受到 Clojure 中的代理的启发。” 这是 Akka 代理文档中的第一行,希望它能解决代理的部分问题。就期货而言,它们在概念上都是相同的(即在单独的线程上调用操作)。底层实现基于java.util.concurrent
,因此两者都使用相同的底层基础设施。
Scala部分:可组合词
如何发挥作用的重要部分(对于代理和期货)。如果您访问 akka 文档,您会发现您可以在 Akka 期货上使用高阶函数map
,例如filter
等,即map
对未来的操作会返回另一个未来(类似地filter
)。这使您可以轻松地将期货组合/链接在一起,并等待最终的未来获得最终值。现在,这一切都是可能的,因为map
, filter
, for
comprehension 等都基于 Scala (monadic) API,它基本上允许任何新类型提供这些函数的特定实现。
Clojure 部分:
现在在 clojure 方面,您知道map
, filter
etc 只是适用于集合的普通函数,即它们适用于可以遍历的东西,因此与 scala 的 Monadic API 的概念不同。因此,在 Clojure 中,您将使用不同的方式来组合期货,毕竟 Clojure(或一般的 Lisp)允许以多种方式实现组合性
于 2013-05-02T12:55:09.850 回答