Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drools中的加法程序_Drools - Fatal编程技术网

Drools中的加法程序

Drools中的加法程序,drools,Drools,出于好奇,我正试图用加法的口水写一条非常简单的规则。(我知道这不是一件非常成熟的事情,但仍然…) 但获取的错误是$firstNum和$secondNum不能分配给变量。帮帮我 rule "Addition rule" when act : CalcOperation(CalcOperation.ADD, $firstNum : firstNum, $secondNum : secondNum) then $out : $firstNum + $s

出于好奇,我正试图用加法的口水写一条非常简单的规则。(我知道这不是一件非常成熟的事情,但仍然…) 但获取的错误是$firstNum和$secondNum不能分配给变量。帮帮我

rule "Addition rule"
    when
        act : CalcOperation(CalcOperation.ADD,  $firstNum : firstNum, $secondNum : secondNum)
    then
        $out : $firstNum + $secondNum;;
        //logger.info("Result of addition is : "+$out);
end

...............................................................................

Here is the CalcOperation class.

public class CalcOperation {
    Double firstNum;
    Double secondNum;
    public static  Boolean ADD;
    public static  Boolean SUB;
    public static  Boolean MUL;
    public static  Boolean DIV;

    public CalcOperation(Boolean operation, Double m, Double n){
        this.firstNum = m;
        this.secondNum = n;
    }

您将需要深入研究Java,并深入研究Drools文档

静态变量在您使用它的上下文中没有用处。若你们想有单独的对象进行加法、减法等运算,你们可以将其子类化。实例变量应该是私有的,并且至少有一个getter

在规则中,不能将变量(
$firstNum
等)绑定到字段,除非该变量具有正确的getter(或者是公共的-不推荐)

然后,部分或结果必须用Java编写<代码>$out:$firstNum+$secondNum不是有效的Java语句

下面是一个Java类:

public enum Operator { ADD, SUB, MUL, DIV };

public class Operation {
    private double op1;
    private double op2;
    private Operator op;
    public Operation( Operator op, double op1, double op2 ){
        this.op = op;
        //...
    }
    public Operator getOp(){ return op; }
    //...
}
规则如下:

rule "exec op"
when
    $op: Operation( $op: Operator.ADD, $op1: op1, $op2: op2 )
then
    System.out.writeln( "result: " + ($op1 + $op2) );
end