【发布时间】:2021-06-05 23:03:17
【问题描述】:
所以我的情况是我有一个布尔评估器。本质上,它们都是自定义类型BooleanExpression。每个值都有一个方法.evaluate(context),它接受变量映射context,并应用评估。评估总是返回一个Boolean。
我正在尝试专门使用 Java 流来输出这些数据。到目前为止,我已经能够使用 Java Streams 将.evaluate 应用于List<BooleanExpression> 列表中的每个BooleanExpression:
return expressions.stream().map(e -> e.evaluate(context)).collect(Collectors.toList());
它工作正常并返回类似[true, true, false]。
我现在要做的是使用stream().reduce 来连接该列表中的每个元素。如果我有[true, false, false] 的列表,我想以false 结尾。
这是我目前的代码:
return expressions.stream().reduce((x, y) -> x.evaluate(context) && y.evaluate(context));
它应该返回一个Boolean。但是,它给了我一个错误:
Java 流:无法从
Optional<BooleanExpression>转换为Boolean。
我不确定我在这里做错了什么。谁能给点建议?
【问题讨论】:
标签: java functional-programming java-stream boolean-logic