给定值foo
和Stream
个Consumer<Foo>
个无效函数,将每个函数应用于值的最简洁方法是什么?现在我有
consumers.forEach(c -> c.accept(foo));
这并不可怕,但我怀疑可能有某种方法可以将其内部转出并仅使用方法引用(没有显式lambda)来实现。可能是单身人士名单和zip()
?
我对直接的Java 8答案,或Vavr或Scala感到满意。
(请注意,这不是折叠,或者至少不是通常的foldLeft
/ foldRight
应用程序;如果有返回值,我会丢弃它们,而不是迭代它们。)
答案 0 :(得分:1)
我认为真正关注的是返回void
的方法是代码气味。为什么他们不能返回有用的东西,或者至少执行它们的副作用然后返回原始值,这样可以更好地链接。我认为这将是一种更好的方法,但如果没有,我认为forEach方法是可以的。
答案 1 :(得分:0)
在Scala中你应该能够做到
consumers.foreach(_.accept(foo));