Euforia - Constantes

Las constantes también son variables a las que se les asigna un valor inicial que nunca puede cambiar en la vida del programa. Euphoria permite definir constantes utilizando una palabra clave constante de la siguiente manera:

constant MAX = 100
constant Upper = MAX - 10, Lower = 5
constant name_list = {"Fred", "George", "Larry"}

El resultado de cualquier expresión se puede asignar a una constante, incluso una que implique llamadas a funciones previamente definidas, pero una vez que se realiza la asignación, el valor de la variable constante se "bloquea".

Las constantes no pueden declararse dentro de una subrutina. El alcance de unconstant que no tiene un modificador de alcance, comienza en la declaración y termina y al final del archivo en el que se declara.

Ejemplos

#!/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 )

Esto produce el siguiente error:

./test.ex:10
<0110>:: may not change the value of a constant
MAX = MAX + 1
   ^

Press Enter

Si elimina las dos últimas líneas del ejemplo, se produce el siguiente resultado:

Value of MAX 100
Value of Upper 90
Value of Lower 5

Las enumeraciones

Un valor enumerado es un tipo especial de constante donde el primer valor predeterminado es el número 1 y cada elemento posterior se incrementa en 1. Las enumeraciones solo pueden tomar valores numéricos.

Las enumeraciones no pueden declararse dentro de una subrutina. El alcance de unenum que no tiene un modificador de alcance, comienza en la declaración y termina y al final del archivo en el que se declara.

Ejemplos

#!/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 )

Esto producirá el siguiente resultado:

Value of ONE 1
Value of TWO 2
Value of THREE 3
Value of FOUR 4

Puede cambiar el valor de cualquier elemento asignándole un valor numérico. Los valores posteriores son siempre el valor anterior más uno, a menos que también se les asigne un valor predeterminado.

#!/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 )

Esto produce el siguiente resultado:

Value of ONE 1
Value of TWO 2
Value of THREE 3
Value of ABC 10
Value of XYZ 11

Las secuencias usan índices enteros, pero con la enumeración puede escribir código como este:

enum X, Y
sequence point = { 0,0 }

point[X] = 3
point[Y] = 4