Az értékadás operátora itt is az =, de minden aritmetikai operátorra értelmezve van az értékadással összevont formája.
//Ha OP egy tetszőleges aritmetikai operátor
a = a OP b; // ekvivalens az
a OP= b; // kifejezéssel.
Léteznek a C/C++ -ban megszokott inkrementáló (++), dekrementáló (--) operatorok. Működésük teljesen megegyezik a C/C++ -beli működéssel. Ugyan így létezik a feltétel operator is.
e1 ? e2 : e3
Ennek az operátornak a működése teljesen megegyezik a C/C++
-ban találhatóval, tehát e1 kifejezés kiértékelődik, és ha az eredmény @true
akkor e2, ha @false akkor e3 hajtódik végre.
Létezik a nyelvben egy úgynevezett szekvencia operátor, amelyet az in kulcsszó
jelöl.
"red" in #[1, 2, "green", "yellow", "red"];
Ennek a kifejezésnek az értéke igaz, mert a "red" eleme a jobboldalnak. Az in kulcsszónak van egy kicsit módosított jelentése is, amellyel majd a for ciklust alakíthatjuk foreach szerkezetté.
A nyelv blokkszerkezetű, a blokkokat nyitó és záró kapcsos közé kell elhelyezni, mint C/C++ -ban.
if (expression)
statement-1
[ else
statement-2 ]
A C/C++ -ból megszokott if elágazás írására van itt is lehetőség, és a csellengő else problémáját is ugyan azzal a módszerrel oldja meg, mégpedig az else-t az utolsó if-hez ragasztja. Sajnos a nyelvben nincsen külön vezérlési szerkezet a többágú elágazásokra (lásd C/C++ switch), így ezeket muszáj if else szerkezetekkel szimulálni.
if (expression)
statement-1
else if (expression-2)
statement-2
else if (expression-3)
statement-3
...
else
statement-N
Ha egy értéket logikai kifejezésben használunk, akkor az érték @true-vá konvertálódik, kivéve a @false, a @nil és az egész 0 értékeket, amelyek @false ként viselkednek. A logikai operatorok kiértékelése rövidzáras algoritmussal történik.
if(@false && sosemfut()) // pelda a rövidzáras és operátorra,
{ // a sosemfut() függvényre, mint a neve is mutatja, sosem kerül a vezérlés
}
else
{
}
A jól megszokott cikluskonstrukcióink itt is rendelkezésre állnak. Írhatunk while, do while, for, ciklusokat.
while (expression)
statement
for (init; test; update)
statement
Ez utóbbi ekvivalens a következővel.
init;
while (test)
{
statement
update;
}
A for ciklus és az in kulcsszó segítségével készíthetünk foreach szerkezetet is.
local state; local states = #["Italy", "England", "France", "Germany", "Spain"];
for (state in states)
{
basic.print( state, '\n' );
}Ezzel a vezérlési szerkezettel végigiterálhatunk, tetszőleges tömb típusú objektumokon, akkor is ha a tömb nem csak skalárokat tartalmaz.
A do while szerkezet is a megszokott alakú.
do
statement
while (condition);
A nyelv tartalmazza a goto feltétel nélküli vezérlésátadó utasítást, de használata nem javasolt. Emellett tartalmaz a nyelv egy másik, barátságosabb ugró utasítás a break-et, amivel a ciklusmag bármely pontjáról kiugorhatunk, a ciklus utáni utasításra. A breaknek megadhatunk opcionálisan egy paramétert, amivel jelölhetjük hogy hány szintnyit akarunk ugrani felfelé.
local i, j;
for (i = 0; i < 10; i = i + 1)
{
for (j = 0; j < 10; j = j + 1)
{
if (i == 5) break 2;
}
}
basic.print( "i = ", i, ", j = ", j, '\n' );
A kód végrehajtásának eredményeként a következő sort kapjuk.
i = 5, j = 0