欣快感 - 变量


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

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

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

变量声明

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

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

integer x, y, z

sequence a, b, x

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

声明变量的简单Behave不会为其分配任何值。如果您在给它赋值之前尝试读取它,Euphoria 将发出运行时错误,因为“变量 xyz 从未被赋值”

赋值

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

变量名称 = 变量值

例如 -

#!/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中声明的,则其作用域从声明开始,到相应的结束语句结束。

  • if语句中,作用域从声明开始,到下一个else、elsifend if语句结束。

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

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

  • 没有作用域修饰符的常量的作用域从声明开始,到声明它的文件末尾结束。

  • 没有范围修饰符的枚举范围从声明开始,到声明它的文件末尾结束。

  • 所有没有作用域修饰符的过程、函数类型的作用域从源文件的开头开始,到声明它们的源文件的末尾结束。

没有作用域修饰符的常量、枚举、模块变量、过程、函数和类型被称为局部变量。但是,这些标识符可以在其声明之前有一个作用域修饰符,这会导致它们的作用域扩展到声明它们的文件之外。

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

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

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

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