Euforia - stałe

Stałe to także zmienne, którym przypisywana jest wartość początkowa, która nigdy nie może ulec zmianie w trakcie życia programu. Euphoria pozwala zdefiniować stałe za pomocą słowa kluczowego constant w następujący sposób -

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

Wynik dowolnego wyrażenia można przypisać stałej, nawet takiej, która obejmuje wywołania wcześniej zdefiniowanych funkcji, ale po przypisaniu wartość stałej zmiennej jest „zablokowana”.

Stałe nie mogą być deklarowane wewnątrz podprogramu. Zakresconstant który nie ma modyfikatora zakresu, zaczyna się od deklaracji i kończy oraz koniec pliku, w którym jest zadeklarowany.

Przykłady

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

Powoduje to następujący błąd -

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

Press Enter

Jeśli usuniesz ostatnie dwa wiersze z przykładu, otrzymasz następujący wynik -

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

te teksty stałe

Wartość wyliczona jest specjalnym typem stałej, w której pierwsza wartość ma wartość domyślną 1, a każda następna pozycja jest zwiększana o 1. Wyliczenia mogą przyjmować tylko wartości liczbowe.

Wyliczenia nie mogą być deklarowane w podprogramie. Zakresenum który nie ma modyfikatora zakresu, zaczyna się od deklaracji i kończy oraz koniec pliku, w którym jest zadeklarowany.

Przykłady

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

To da następujący wynik -

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

Możesz zmienić wartość dowolnego elementu, przypisując mu wartość liczbową. Kolejne wartości są zawsze poprzednią wartością plus jeden, chyba że również mają przypisaną wartość domyślną.

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

Daje to następujący wynik -

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

Sekwencje używają indeksów całkowitych, ale z enum możesz napisać taki kod -

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

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