【问题标题】:Is there a way to use Optional.orElse in eval?有没有办法在 eval 中使用 Optional.orElse?
【发布时间】:2022-08-04 03:40:53
【问题描述】:

我有一个返回 Optional 的函数,我想在 drools eval 中使用它,例如

rule \"some rule\"
  when
    eval(func().orElse(1.0) > 0.0)
  then
    ....
end

其中func() 的返回类型为Optional<Double>。由于orElse,上面给了我编译错误。有什么解决方法吗?谢谢!

  • 不要使用eval。这是不好的做法。你也忽略了我们在这里谈论的 Drools 的版本。

标签: java eval drools


【解决方案1】:

避免使用eval

将函数调用的结果分配给 Double 并在那里进行比较。就像是...

Double( this > 0.0 ) from func().orElse(1.0)

根据我的经验,Drools 对版本 >= Java 8 的内置支持在 DRL 中屡试不爽,尤其是对于较旧的 Drools。如果这一切都不起作用,您最好的选择可能是编写一个方法来包装 func().orElse(...) 并解析为一个简单的 Double 并改用它。

【讨论】:

    猜你喜欢
    • 2015-11-09
    • 2023-03-27
    • 1970-01-01
    • 2022-06-14
    • 2014-06-13
    • 2021-12-21
    • 2012-10-28
    • 2021-01-05
    • 2021-05-29
    相关资源
    最近更新 更多