Minden azonosítót - , kivéve a lefoglalt
azonosítókat, mert azok egy Emerald programon keresztül
elérhetõk - deklarálni kell.
Két általános formájú deklaráció van: egy a konstansokra és egy a változókra:
Declaration ::= variableDeclaration |constantDeclaration variableDeclaration ::= [ attached ] var identifierList : type [ initializer ] constantDeclaration ::= [ attached ] const identifier [ : type ] initializer identifierList ::= identifier{ " , " identifier } initializer ::= " " expression
A konstans
deklaráció létrehoz egy azonosítót, ami egy szimpla
objektumra mutat, annak egész élettartama folyamán. Amíg egy
konstans azonosító ugyanarra az objektumra vonatkozik, addig az
objektum állapota változhat, ha az módosítható.
A változó azonosító értéke értékadással módosul.
Ha van inicializáló utasítás, akkor minden változóhoz a
listában hozzárendelõdik az adott kifejezés értéke. Amíg
egy változó nincs inicializálva nil az értéke!
Az opcionális attached megengedi a
programozónak az egyirányú összekapcsolást objektumok
között. Az áthelyezése egy objektumnak automatikusan
áthelyezi a többi objektumot, ami ehhez kapcsolva van.
Például a veremnél:
var myDir : Directory attached var aList : linkedList
Ez a kód két változót
deklarál: a myDir-t és az aList-et, melyek nevei az absztrakt
típusú Directory és linkedList objektumoknak.
A kezdeti értékadások és konstansok értékei a
végrehajtások elõtt a leírt sorrendben értékelõdnek ki a
blokkban.
Az Emeraldban a
láthatósága az azonosítóknak nagyrészben rendhagyó. Egy
azonosító látható abban a részben, amelyikben deklarálva
lett, de nem csak azután a sor után, ahol a deklaráció
történt.
A következõ konstrukciók új láthatósági köröket nyitnak
az azonosítóknak, és az azonosítók implicit
beimportálódnak a belsõ körökbe, ahol nincsenek
átdefiniálva: