Euforia - Costanti
Le costanti sono anche variabili a cui viene assegnato un valore iniziale che non può mai cambiare nella vita del programma. Euphoria consente di definire le costanti utilizzando la parola chiave costante come segue:
constant MAX = 100
constant Upper = MAX - 10, Lower = 5
constant name_list = {"Fred", "George", "Larry"}
Il risultato di qualsiasi espressione può essere assegnato a una costante, anche se coinvolge chiamate a funzioni definite in precedenza, ma una volta effettuata l'assegnazione, il valore della variabile costante è "bloccato".
Le costanti non possono essere dichiarate all'interno di una subroutine. Lo scopo di aconstant che non ha un modificatore di ambito, inizia dalla dichiarazione e finisce e alla fine del file in cui è dichiarato.
Esempi
#!/home/euphoria-4.0b2/bin/eui
constant MAX = 100
constant Upper = MAX - 10, Lower = 5
printf(1, "Value of MAX %d\n", MAX )
printf(1, "Value of Upper %d\n", Upper )
printf(1, "Value of Lower %d\n", Lower )
MAX = MAX + 1
printf(1, "Value of MAX %d\n", MAX )
Questo produce il seguente errore:
./test.ex:10
<0110>:: may not change the value of a constant
MAX = MAX + 1
^
Press Enter
Se elimini le ultime due righe dall'esempio, produce il seguente risultato:
Value of MAX 100
Value of Upper 90
Value of Lower 5
Le enumerazioni
Un valore enumerato è un tipo speciale di costante in cui il primo valore predefinito è il numero 1 e ogni elemento successivo viene incrementato di 1. Gli enum possono assumere solo valori numerici.
Gli enum non possono essere dichiarati all'interno di una subroutine. Lo scopo di unenum che non ha un modificatore di ambito, inizia dalla dichiarazione e finisce e alla fine del file in cui è dichiarato.
Esempi
#!/home/euphoria-4.0b2/bin/eui
enum ONE, TWO, THREE, FOUR
printf(1, "Value of ONE %d\n", ONE )
printf(1, "Value of TWO %d\n", TWO )
printf(1, "Value of THREE %d\n", THREE )
printf(1, "Value of FOUR %d\n", FOUR )
Questo produrrà il seguente risultato:
Value of ONE 1
Value of TWO 2
Value of THREE 3
Value of FOUR 4
È possibile modificare il valore di qualsiasi elemento assegnandogli un valore numerico. I valori successivi sono sempre il valore precedente più uno, a meno che anche a loro non venga assegnato un valore predefinito.
#!/home/euphoria-4.0b2/bin/eui
enum ONE, TWO, THREE, ABC=10, XYZ
printf(1, "Value of ONE %d\n", ONE )
printf(1, "Value of TWO %d\n", TWO )
printf(1, "Value of THREE %d\n", THREE )
printf(1, "Value of ABC %d\n", ABC )
printf(1, "Value of XYZ %d\n", XYZ )
Questo produce il seguente risultato:
Value of ONE 1
Value of TWO 2
Value of THREE 3
Value of ABC 10
Value of XYZ 11
Le sequenze usano indici interi, ma con enum puoi scrivere codice come questo -
enum X, Y
sequence point = { 0,0 }
point[X] = 3
point[Y] = 4