Pro některé funkce je nutné, aby vracely více než jednu hodnotu. To lze zajistit vrácením vektoru hodnot, ale častokrát je praktičtější použít předávání reference (odkazu) na proměnnou. Předáte funkci referenci na proměnnou a funkce proměnnou nastaví pomocí dereference. Nemusíte se s používáním referencí omezovat jen na tento účel, ale tohle je jejich hlavní využití.
Když používáte funkce, které vracejí hodnoty skrze reference v seznamu argumentů, jednoduše předejte název proměnné s ampersandem. Například následující kód bude počítat vlastní čísla matice A
s počátečním vlastním vektorem odhadů x
a uloží vypočítaný vlastní vektor do proměnné pojmenované v
:
RayleighQuotientIteration (A,x,0.001,100,&v)
V detailech fungování a syntaxi jsou reference podobné jako v jazyku C. Operátor &
odkazuje na proměnnou a *
provádí dereferenci proměnné. Obojí lze uplatnit pouze na identifikátory, takže **a
není v jazyce GEL platný výraz.
Reference je nejlépe vysvětlit na příkladu:
a=1; b=&a; *b=2;
a
nyní obsahuje 2. Můžete používat i reference na funkce:
function f(x) = x+1; t=&f; *t(3)
vrátí 4.