Control Structures

EScript supports the typical set of control structures.

if/else

var result = someFunction ();
if(result) {
  out("Success");
} else {
  out("Failure");
}
var num = calculateSomething ();
if(num < 0)
  out("Too small");
else if(num >= 0 && num <= 100)
  out("Range okay");
else
  out("Too large");

Ternary Operator ? :

var abs = value >=0 ? value : -value;

while and do-while

var i = 0;
while(i<10) {
  out(i++, " ");
} // Output: 0 1 2 3 4 5 6 7 8 9
var j = 0;
do {
	out(j++, " ");
} while(j < 10); // Output: 0 1 2 3 4 5 6 7 8 9

Looping with for

var sum = 0;
for(var i = 0; i < 100; ++i) {
  sum += i;
}
outln("Sum of numbers: ", sum);

Collection Iteration with foreach

The general syntax of the foreach loop is: foreach(<container> as <key>, <value>) <statement> or if you’re only interested in the values: foreach(<container> as <value>) <statement>

var chars = [a, c, k, b, d, x, j];
foreach(chars as var index, var currentChar) {
  if(currentChar === x) {
    outln("Character ’x’ found at index ", index);
    break;
  }
}
foreach(chars as var currentChar) {
  if(currentChar === x) {
    outln("Character ’x’ was found");
    break;
  }
}

Exception Handling

Exceptions can be caught by using a try-catch statement:

try {
  outln(42/0); // will throw a division by zero exception
} catch(e) {
  outln(e);
}

You can throw any object as an exception like this: throw 42; or throw new Exception();

But in order to get a full stacktrace you should throw an exception by calling the Runtime.exception(msg) function:

Runtime.exception("some message");