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