Az Aikido programozási nyelv

Alprogramok, modulok

Szintaxis

Az alprogramok Aikidoban a függvények. Függvények definíciója a function kulcsszóval történik. Ezután kell megadni a függvény nevét, paraméterlistáját, nem kötelezően pedig a visszatérési érték típusát. Ha ez utóbbit nem adjuk meg, az Aikido interpreter futási időben kikövetkezteti a visszatérési értéket (ha van). Ezt követi a függvény törzse, ami viszont a forrásállomány más részeiben tovább bővíthető.

function kiir():int { "Hello" -> stdout } ... //egyéb kód //később eszünkbe jut, hogy a kiir() függvénnyel egyéb információkat is kiíratnánk, és egy visszatérési értéket is adunk extend kiir():int { " world!" -> stdout return 0 }

Függvények előre deklarációjára van szükség Aikido-ban, ha egymást hívó függvényeket szeretnénk létrehozni. Ezt elérhetjük úgy is, hogy az első függvény deklarációnak üres törzset adunk, amit majd később egészítünk ki az extend lehetőséggel. A másik lehetőség, hogy először csak (törzs nélkül) deklaráljuk az első függvényt, majd a második függvény után ismét deklaráljuk, de itt már megadjuk a törzsét is.

Paraméterátadás

Aikidoban a legtöbb programnyelvhez hasonlóan, a paraméterátadás kétféle módon történhet:

Alapértelmezés szerint a skalár típusú értékek (integer, real, character) érték szerint, az összetett típusú értékek pedig referencia szerint kerülnek átadásra.

Referencia szerinti paraméterátadás kikényszerítése

A skalár típusú értékeket referencia szerinti paraméterátadásra tudjuk kényszeríteni a var kulcsszó használatával a függvény paraméterlistájában.
//az a változó referencia szerint, a b változó az alapértelmezett viselkedés szerint adódik át. //tehát ha b skalár típusú akkor érték szerint, egyébként referencia szerint kerül átadásra. function f(var a, b) { ... }

Blokkok

Aikidoban tetszőleges helyen definiálhatóak és deklarálhatóak változók, függvények, osztályok és egyéb objektumok. Ebből következően egy függvény belsejében is definiálhatunk tetszőleges függvényeket, amivel egy blokkstruktúrát hozhatunk létre. A külső blokkban található függvény szintén egy főprogramként működik, ugyanúgy végrehajtódik, mint minden más függvény törzse. A benne lévő függvénydefiníciók csak akkor hajtódnak végre, ha azt a külső függvényben meghívjuk.
Ez a fajta blokkosítás a függvényekhez teljesen hasonló módon használható class-ek, monitor-ok, thread-ek és package-ek esetében is. A blokkokon belül különböző láthatóságot is adhatunk az egyes objektumoknak. A private láthatóságú objektumokat csak az adott blokkban, illetve annak részblokkjaiban érhetjük el.

Rekurzió

Aikido-ban a rekurzió más programnyelvekhez hasonlóan a függvény önmagát történő meghívását jelenti. Szintaxisában semmi váratlan nincs.

//faktoriális function fakt(n){ if(n<=1) { return 1 } return n*fakt(n-1) }

Natív függvények

Aikidoban lehetőség van más programnyelvekben megírt natív kódrészek meghívására. Ezt a függvényhívás során jelölhetjük a függvény neve előtti native kulcsszóval. Ebben az esetben az interpreter felkutatja a szimbólum táblában a megfelelő függvénynevet, és meghívja azt. Natív függvények leginkább az operációs rendszer beépített függvényeinek meghívásaira használandók.