Package jason.stdlib

Class if_then_else

All Implemented Interfaces:
InternalAction, Serializable

@Manual(literal="if (formula) { plan_body1 } else { plan_body2 }", hint="implementation of \"if then, elif then, and else\"", argsHint="the formula that when true makes the plan_body1 be executed, otherwise plan_body2 will be executed", argsType="logical formula", examples={"if (vl(X) & X > 10) { .print(\"value > 10\"); }: where vl(X) is a belief","if (e(1)) { .print(a); } elif (e(2)) { .print(b); } elif (e(3)) { .print(c); } else { .print(d); }"}, seeAlso="") public class if_then_else extends DefaultInternalAction
Implementation of if.

Syntax:

  if ( logical formula ) {
     plan_body1
  [ } else { plan_body2 ]
  [ } elif ( logical formula  ) { plan_body3 ]
  }

if logical formula holds, plan_body1 is executed; otherwise, plan_body2/3 is executed.

Example:

+event : context
  invalid input: '<'- ...
     if (vl(X) invalid input: '&' X > 10) { // where vl(X) is a belief
       .print("value > 10");
     }
     ...
     if   (e(1)) { .print(a); }
     elif (e(2)) { .print(b); }
     elif (e(3)) { .print(c); }
     else        { .print(d); }
     ...
The unification is changed by the evaluation of the logical formula, i.e., X might have a value after if.

See Also: