函数式编程习惯用于将一系列void函数应用于单个值

时间:2017-11-28 21:49:26

标签: java scala functional-programming vavr

给定值fooStreamConsumer<Foo>个无效函数,将每个函数应用于值的最简洁方法是什么?现在我有

consumers.forEach(c -> c.accept(foo));

这并不可怕,但我怀疑可能有某种方法可以将其内部转出并仅使用方法引用(没有显式lambda)来实现。可能是单身人士名单和zip()

我对直接的Java 8答案,或Vavr或Scala感到满意。

(请注意,这不是折叠,或者至少不是通常的foldLeft / foldRight应用程序;如果有返回值,我会丢弃它们,而不是迭代它们。)

2 个答案:

答案 0 :(得分:1)

我认为真正关注的是返回void的方法是代码气味。为什么他们不能返回有用的东西,或者至少执行它们的副作用然后返回原始值,这样可以更好地链接。我认为这将是一种更好的方法,但如果没有,我认为forEach方法是可以的。

答案 1 :(得分:0)

在Scala中你应该能够做到

consumers.foreach(_.accept(foo));