给定一个序列Supplier<Option<T>>
——例如,一个方法引用列表——获得第一个定义结果的惯用方法是什么,如果有的话?理想情况下,在第一个成功的结果之后不再调用任何供应商。
我现在拥有的是:
Stream<Supplier<Option<Foo>>> suppliers = Stream.of(
bar::fooOption,
baz::fooOption,
qux::fooOption
);
Option<Foo> firstDefined = suppliers.map(Supplier::get)
.find(Option::isDefined)
.flatMap(Function.identity());
但似乎应该有一种方法可以使平面图更平坦。