📜  Euphoria-常量

📅  最后修改于: 2020-11-04 07:42:41             🧑  作者: Mango


 

常量也是为变量分配了一个初始值,该值在程序生命中永远不会改变。欣快允许使用常量关键字定义常量,如下所示:

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 X, Y
sequence point = { 0,0 }

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