Forrásfájl szerkezete
A Pascal nyelvhez hasonlóan, itt is kötött a forrásfájl szerkezete. Három főbb részből áll:
- namespace: Itt lehet saját névtere létrehozni. Akár több forrásfájlnak is lehet
azonos a névtere, ekkor ezek össze lesznek vonva. (Névtér használata "uses" kulcsszóval
lehetséges.
- interface: Ebben a szekcióban kell minden olyan változót vagy osztályt írni, amit
más forrásfájlból is el szeretnénk érni (export rész)
- implementation: Ez a részleg tartalmazza a metódusok megvalósítását.
namespace
interface
uses
type
<interface definition(s)>
<class definition(s)>
<record definition(s)>
<arrays>
<method definition(s)>
const
<>
implementation
uses
types
arrays
const
method implementation(s)
classname.method implementation(s)
end.
Alprogramok, függvények
A Chrome nyelvben nincsenek külön alprogramok és függvények, hanem csak osztálymetódusok, amik
attól függően, hogy van visszatérési érték vagy nincs függvényként illetve alprogramként
használható. Szintaxis:
szintaxis, láthatóság, visszatérési érték, alprogram függvény
[class] method classname.methodname [parameters] [: result] ;
begin
[methodbody]
end;
A metódusoknak az osztályhoz hasonlóan meg tudunk adni láthatóságot. (Részletesebben lásd
az osztályok láthatóságánál). A "result" kulcsszó után lehet megadni a visszatérési értékeket.
Paraméterek
Három féle paramétert különböztetünk meg:
- egyszerű (simple) paraméter: nincs kezdő értéke
- lista (list) parmáterek: több paraméter azonos típussal
- default paraméter: alapártelmezett értékkel rendelkező paraméter
A paramétereket 3 féle képpen lehet deklarálni:
- const: konstans érkékű paraméter
- var: értékét a hívásnál kell megandi
- out: hasonlít a "var"-hoz csak az ilyen típusú paraméterek értékét nem kell megadi
a hívásnál.
Ha nem nem írunk a paraméter elé semmit, akkor az érték szerinti paraméterátadásnak számít
és a változások elvesznek a metódus visszatérése után.
Példák:
method Test1(a1: Word; const a2: String; var a3: Integer; out a4: Byte);
method Test2(b1,b2: Word; const b3,b4: String; var b5,b6: Integer; out b7,b8: Byte);
method Test3(c1: Word := 5; const c2: String := 'abc'; var c3: Integer := 8);
Túlterhelés
A Chrome támogatja a túlterhelést, azaz lehet azonos nevű de különböző
szignatúrával rendelkező metódusokat írni. Ekkor mindig a függvényhívásra legjobban illeszkedő
hajtódik végre.
Operátor felüldefiniálás
A nyelv lehetőséget biztosít, arra hogy operátorokat definiáljuk illetve a már meglévőket
felüldefiniáljuk. Például:
type
ComplexNumber = class
…
public
class operator Add(a: ComplexType; b: ComplexType): ComplexType;
class operator Add(a: ComplexType; b: Int32): ComplexType;
class operator Implicit(a: Int32): ComplexType;
end;
Ezen kívül lehetőség van az ősosztály metódusainak felüldefiniálására is. A virtuális
metódusok felülírása az "override" kulcsszóval lehetséges.
Rekurzió
A nyelv támogatja a rekurziót.