Det kan vara nödvändigt för vissa funktioner att returnera mer än ett värde. Detta kan åstadkommas genom att returnera en vektor av värden, men många gånger är det bekvämt att skicka en referens till en variabel. Du skickar en referens till en variabel till en funktion, och funktionen kommer att ställa in variabeln åt dig med en dereferering. Du måste inte använda referenser bara för detta syfte, men det är deras huvudsakliga användning.
When using functions that return values through references
in the argument list, just pass the variable name with an ampersand.
For example the following code will compute an eigenvalue of a matrix
A
with initial eigenvector guess
x
, and store the computed eigenvector
into the variable named v
:
RayleighQuotientIteration (A,x,0.001,100,&v)
Detaljerna kring hur referenser fungerar och syntaxen liknar språket C. Operatorn &
refererar en variabel och *
derefererar en variabel. Båda kan endast tillämpas till en identifierare, så **a
är inte ett giltigt uttryck i GEL.
References are best explained by an example:
a=1;
b=&a;
*b=2;
now a
contains 2. You can also reference functions:
function f(x) = x+1;
t=&f;
*t(3)
gives us 4.