5. Vezérlési szerkezetek
Minden utasítást ; karakter zár le.
A szerkezet alkalmazásakor létrejön egy
selector_value
nevű, a kifejezés típusával megegyező típusú lokális változó. Ezzel hivatkozhatunk a kifejezés
értékére a szerkezeten belül.
5.3.1. Számlálásos és iterátoros ciklusok
A Trellis nyelvben iterátoros for ciklus van, mely ugyanúgy működik, mint a CLU nyelv for ciklusa.
A ciklusváltozó lokális a ciklusra nézve. Az iterátor művelet visszatérési típusa megegyezik a változó
típusával.
Iterátort hasonlóan készíthetünk mint függvényt, de
returns típus
helyett
yields típus
eredmény-specifikációt adunk meg. Az iterátor törzsében a
yield kifejezés;
utasításoknál határozzuk meg a ciklusváltozó következő értékét.
Az iterátor lefut az első
yield kifejezés;
utasításig. A kifejezés értékét felveszi a ciklusváltozó, és lefut a ciklusmag. Ezután az iterátor
futása a
yield
utasítás után folytatódik, a következő
yield
utasításig.
Az iterátor általában maga is egy ciklus.
A beépített típusokhoz vannak előre definiált iterátorok.
5.3.2. Elöl- és hátultesztelős ciklusok
Nincsenek.
5.3.3. Végtelen ciklus és kiugrások
Ciklust a
loop ... end loop
szerkezettel lehet létrehozni. Ez a ciklusmagot ismétli egy
exit
,
leave
,
return
vagy
signal
utasításig. Kilépési feltételt az
exit
utasítás segítségével lehet definiálni.
Kiugrás a ciklusból:
continue:
A legbelső
loop
vagy
for
ciklus aktuális lépését megszakítja, és a ciklusmag következő végrehajtását kezdi meg.
exit
[
when
kifejezés1 ] [
with
kifejezés2 ];
exit
[
unless
kifejezés1 ] [
with
kifejezés2 ];
A legbelső
loop
vagy
for
ciklust terminálja, és a ciklusmag után folytatja a program végrehajtását. A
when/unless
kulcsszó után írhatunk kilépési feltételt (ha kifejezés1 igaz / kivéve ha kifejezés1 igaz), illetve a
with
kulcsszó után megadhatjuk a ciklus visszaadott értékét.
leave:
Elhagy egy blokkot, amiben éppen benne vagyunk. A blokkot címkével kell megjelölni. A blokk visszaadott
értékét is megadhatjuk a
with
kulcsszó után.
leave
címke [
with
kifejezés ];
signal
kivételnév [
with
objektum ];
Befejezi az aktuális művelet futását, és a kivétel kiváltásával tér vissza. A hibát a hívó blokknak kell
lekezelnie. Visszaadhatunk egy objektumot is, amely részletesebb információkat közöl a hibáról (lásd még:
8. fejezet: Kivételkezelés).