Schleifen
for -und while -Anweisungen.IRL enthält Anweisungen für die Erstellung von Schleifen im Aktionsteil technischer Regeln.
For-Schleife
Die Anweisung for
ist eine kompakte Methode für das Iterieren über einen Bereich von Werten.
Das allgemeine Format der Anweisung for kann wie folgt ausgedrückt werden:
then{
for (initialization; test; increment) {
statements
}
}Der Ausdruck initialization wird verwendet, um die Schleife zu initialisieren. Er wird einmal am Anfang der Schleife ausgeführt. Der Ausdruck test bestimmt, wann die Schleife beendet wird. Dieser Ausdruck wird am Anfang jeder Iteration der Schleife ausgewertet. Wenn der Ausdruck mit false ausgewertet wird, wird die Schleife beendet. increment ist ein Ausdruck, der nach jeder Iteration durch die Schleife aufgerufen wird. Beispiel:
then {
int ?i = 1;
int ?j = 1;
for ( ?i = 1; ?i <= 3; ?i++ ) {
for ( ?j = 1; ?j <= 3; ?j++ ) {
System.out.println(" i =" + ?i + " j = " + ?j ) ;
}
}
}Häufig werden for -Schleifen verwendet, um über die Elemente in einem Array oder die Zeichen in einer Zeichenfolge zu iterieren. Im folgenden Beispiel wird eine Anweisung
for verwendet, um über die Elemente eines Arrays zu iterieren und sie auszugeben:
then {
for (?i = 0; ?i < ?arrayOfInts.length; ?i++) {
System.out.println(?arrayOfInts[?i] + " ");
}
}While-Schleife
Sie verwenden eine while-Anweisung, um einen Block von Anweisungen kontinuierlich auszuführen, während eine Bedingung erfüllt bleibt. Die allgemeine Syntax der Anweisung
while ist wie folgt:
then {
while (test) {
statements
}
}Zuerst wertet die Anweisung while den Ausdruck test aus, der einen booleschen Wert zurückgeben muss. Wenn test truezurückgibt, führt die Anweisung while die zugehörigen Anweisungen aus. Die Anweisung while fährt mit dem Testen des Ausdrucks
test und der Ausführung seines Blocks fort, bis
test den Wert false zurückgibt. Im Folgenden sehen
Sie ein Beispiel für eine while-Schleife:
then {
int ?i = 0 ;
while ( ?i <= 3 ) {
System.out.println( ?i ) ;
?i++ ;
}
}Im folgenden Beispiel wird eine Anweisung while
im Aktionsteil der Regel verwendet, um über einen Array von Elementen in einer Variablen mit dem Namen
elements zu iterieren. Die Variable elements ist an ein Attribut einer Variablen
c, auch elements genannt, gebunden. Die Variable c ist im Bedingungsteil der Regel als
Objektgruppe von ManagedObject() deklariert.
rule foundManagedObject {
when {
?c: collect ManagedObject();
}
then {
Enumeration ?elements = ?c.elements();
while (?elements.hasMoreElements()) {
System.out.println(elements.nextElement());
}
}
}