目录

Euphoria - 变量

变量只是用于存储值的保留内存位置。 这意味着在创建变量时,会在内存中保留一些空间。

根据变量的数据类型,解释器分配内存并决定可以存储在保留内存中的内容。 因此,通过为变量分配不同的数据类型,可以在这些变量中存储整数,小数或字符。 Euphoria数据类型在不同的章节中解释。

这些内存位置称为变量,因为它们的值可以在其生命周期内更改。

变量声明 (Variable Declaration)

必须显式声明Euphoria变量以保留内存空间。 因此,在为变量赋值之前,必须声明变量。

变量声明具有类型名称,后跟声明的变量列表。 例如 -

integer x, y, z
sequence a, b, x

声明变量时,您可以命名变量,并定义在程序执行期间可以合法地将哪种值分配给变量。

声明变量的简单行为不会为其赋值。 如果在为其分配任何值之前尝试读取它,Euphoria将发出运行时错误,因为"variable xyz has never been assigned a value"

分配值

等号(=)用于为变量赋值。 变量可以按以下方式分配 -

Variable_Name = Variable_Value

例如 -

#!/home/euphoria/bin/eui
-- Here is the declaration of the variables.
integer counter
integer miles
sequence name
counter = 100 -- An integer assignment
miles = 1000.0 -- A floating point
name = "John" -- A string ( sequence )
printf(1, "Value of counter %d\n", counter )
printf(1, "Value of miles %f\n", miles )
printf(1, "Value of name %s\n", {name} )

这里100,1000.0和“John”分别是分配给countermilesname变量的值。 该程序产生以下结果 -

Value of counter 100
Value of miles 1000.000000
Value of name John

为了防止忘记初始化变量,并且因为它可以使代码更清晰,你可以结合声明和赋值 -

integer n = 5

这相当于以下内容 -

integer n
n = 5

标识符范围

标识符的范围是对可以访问它的代码的描述。 标识符的相同范围内的代码可以访问该标识符,并且代码不在标识符不能访问的范围内。

变量的范围取决于声明的位置和方式。

  • 如果它在for, while, loopswitch声明,则其范围从声明开始,并在相应的end语句处end

  • if语句中,作用域从声明开始,并在next else, elsifend if语句处end if

  • 如果在例程中声明了变量,则变量的范围从声明开始,并在例程的结束语句处结束。 这被称为私有变量。

  • 如果变量是在例程之外声明的,则它的作用域从声明开始,结束并声明它所声明的文件的结尾。这称为模块变量。

  • 没有范围修饰符的constant的范围从声明和结尾开始,并在声明它的文件的末尾开始。

  • 没有范围修饰符的enum的范围从声明和结尾开始,并在声明它的文件的末尾开始。

  • 没有范围修饰符的所有procedures, functionstypes的范围从源文件的开头开始,并在声明它们的源文件的末尾结束。

没有范围修饰符的常量,枚举,模块变量,过程,函数和类型称为locals 。 但是,这些标识符在声明之前可以有一个范围修饰符,这会导致它们的范围超出它们声明的文件范围。

  • 如果关键字global在声明之前,则这些标识符的范围将扩展到整个应用程序。 可以通过应用程序文件中的任何位置访问它们。

  • 如果关键字public在声明之前,则范围扩展到显式包含声明标识符的文件的任何文件,或扩展到包含文件的任何文件,而该文件又包含包含public声明的文件。

  • 如果关键字export在声明之前,则范围仅扩展到直接包含声明标识符的文件的任何文件。

当您在另一个文件中include Euphoria文件时,只有使用范围修饰符声明的标识符才能被执行include的文件访问。 包含文件中的其他声明对于执行包含的文件是不可见的。

↑回到顶部↑
WIKI教程 @2018