Euforia - Constantes

Constantes também são variáveis ​​às quais é atribuído um valor inicial que nunca pode mudar durante a vida do programa. A euforia permite definir constantes usando a palavra-chave constante da seguinte forma -

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

O resultado de qualquer expressão pode ser atribuído a uma constante, mesmo que envolva chamadas a funções previamente definidas, mas uma vez que a atribuição é feita, o valor da variável constante é "bloqueado".

Constantes não podem ser declaradas dentro de uma sub-rotina. O escopo de umconstant que não tem um modificador de escopo, começa na declaração e termina e no final do arquivo em que é declarado.

Exemplos

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

Isso produz o seguinte erro -

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

Press Enter

Se você excluir as duas últimas linhas do exemplo, ele produzirá o seguinte resultado -

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

Os enums

Um valor enumerado é um tipo especial de constante em que o primeiro valor é padronizado para o número 1 e cada item depois disso é incrementado em 1. Enums só podem aceitar valores numéricos.

Enums não podem ser declarados dentro de uma sub-rotina. O escopo de umenum que não tem um modificador de escopo, começa na declaração e termina e no final do arquivo em que é declarado.

Exemplos

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

Isso produzirá o seguinte resultado -

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

Você pode alterar o valor de qualquer item atribuindo a ele um valor numérico. Os valores subsequentes são sempre o valor anterior mais um, a menos que eles também tenham um valor padrão.

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

Isso produz o seguinte resultado -

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

As sequências usam índices inteiros, mas com enum você pode escrever código como este -

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

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