#include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main ()
{
// get PATH using pipe
FILE* pip = popen("exec bash -c 'echo $PATH'", "r");
if (!pip)
{
printf("can not open pipe!");
return 1;
}
char lineversion[600];
memset (lineversion, 0, sizeof(lineversion));
if (!fgets(lineversion, sizeof(lineversion), pip))
{
printf("fgets error!");
return 1;
}
std::cout << lineversion << std::endl;
// get PATH using getenv
char* pPath = getenv ("PATH");
std::cout << pPath << std::endl;
}
答案 0 :(得分:0)
您需要更多地了解Java,以及Drools文档中的更多内容。
静态变量在您使用它的上下文中并不常用。如果你想要加法,减法等单独的对象,你可以子类化Operation。实例变量应该是私有的,至少有一个getter。
在规则中,您不能将变量($firstNum
等)绑定到字段,除非它具有正确的getter(或者是公共的 - 不推荐)。
必须用Java编写then-part或后果。 $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