Константы также являются переменными, которым присваивается начальное значение, которое никогда не может измениться в жизни программы. Euphoria позволяет определять константы, используя ключевое слово константы следующим образом:
constant MAX = 100 constant Upper = MAX - 10, Lower = 5 constant name_list = {"Fred", "George", "Larry"}
Результат любого выражения может быть присвоен константе, даже той, которая включает вызовы ранее определенных функций, но после того, как присвоение выполнено, значение константной переменной «заблокировано».
Константы не могут быть объявлены внутри подпрограммы. Область действия константы , которая не имеет модификатора области, начинается с объявления и заканчивается и заканчивается в файле, в котором она объявлена.
Примеры
#!/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 )
Это приводит к следующей ошибке —
./test.ex:10 <0110>:: may not change the value of a constant MAX = MAX + 1 ^ Press Enter
Если вы удалите две последние строки из примера, то это даст следующий результат —
Value of MAX 100 Value of Upper 90 Value of Lower 5
Перечисления
Перечисляемое значение — это особый тип константы, в котором первое значение по умолчанию равно номеру 1, а каждый элемент увеличивается на 1. Перечисления могут принимать только числовые значения.
Перечисления не могут быть объявлены внутри подпрограммы. Область действия перечисления , у которого нет модификатора области, начинается с объявления и заканчивается и заканчивается в файле, в котором оно объявлено.
Примеры
#!/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 )
Это даст следующий результат —
Value of ONE 1 Value of TWO 2 Value of THREE 3 Value of FOUR 4
Вы можете изменить значение любого элемента, присвоив ему числовое значение. Последующие значения всегда являются предыдущим значением плюс один, если только им тоже не назначено значение по умолчанию.
#!/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 )
Это дает следующий результат —
Value of ONE 1 Value of TWO 2 Value of THREE 3 Value of ABC 10 Value of XYZ 11
Последовательности используют целочисленные индексы, но с помощью enum вы можете написать такой код: