constraints - 流口水中的算术运算符
问题描述
我正在尝试用 Drools 语言实现规则。我需要将两个变量的两个整数值相加。我尝试了一些不同的方法,但它们似乎都不起作用。由于“+”符号或“eval”功能,我得到了失败。我需要进行求和,然后将其值与另一个值进行比较以触发规则。这些是我已经尝试过的组合
$generationGrain : ($smallerGenerationIndex.intValue() + App.GENERATION_TIME.intValue() )
$generationGrain : $smallerGenerationIndex.intValue() + App.GENERATION_TIME.intValue()
$generationGrain : eval($smallerGenerationIndex.intValue() + App.GENERATION_TIME.intValue())
$generationGrain : eval($smallerGenerationIndex + App.GENERATION_TIME)
$generationGrain : ($smallerGenerationIndex + App.GENERATION_TIME )
$generationGrain : ($smallerGenerationIndex.intValue() + App.GENERATION_TIME.intValue() )
是不可能做到这一点还是我错过了什么?我是否应该只创建一个规则,在之后的总和then
,然后是另一个规则,条件和另一个值?
解决方案
Integer 有一个静态求和运算,您可以在这种情况下使用。
$generationGrain: Integer() from Integer.sum( $smallerGenerationIndex, App.GENERATION_TIME )
这也可以让你应用约束。例如,如果您想编写一个规则,使其仅在总和为负时触发,您可以这样做:
$generationGrain: Integer(this < 0) from ...
或者,如果您想对对象列表中的值求和,您可以使用accumulate
带有sum
函数的 an。但是对于两个离散的数字,我会这样做。
(其他数字包装器类型也具有类似的功能,例如 Double。)
推荐阅读
- onclick - 如何使用 registerDocumentFormattingEditProvider 使用自定义语言在 monaco-editor 中手动缩进代码?
- azure-pipelines - Azure 管道步骤 - 触发 Databricks 作业
- java - Warrior 不是抽象的,不会覆盖 Hero 中的抽象方法 getName()
- java - Android 应用可在模拟器上运行,但不能在设备上运行
- java - 在不知道何时完成所有任务的情况下关闭执行程序
- ruby - 是否需要在这里超时重试?
- javascript - ReactJs:我怎样才能简化这个组件,这样我就不必渲染我的 Modal 和 window 组件两次?
- amazon-web-services - 找不到 LibCrypto(缺少:LibCrypto_LIBRARY LibCrypto_INCLUDE_DIR)
- swift - 快速断开当前 GSM 通话
- python - 为每个样本长度生成随机样本并计算均值问题的标准偏差