Euphoria - 变量



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

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

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

变量声明

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

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

integer x, y, z

sequence a, b, x

当您声明变量时,您为变量命名,并定义在程序执行期间可以合法分配给变量的值类型。

仅仅声明一个变量不会为它分配任何值。如果您在为其分配任何值之前尝试读取它,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 中声明,则其作用域从声明开始到相应的 end 语句结束。

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

  • 如果变量在某个例程中声明,则变量的作用域从声明开始到例程的 end 语句结束。这被称为私有变量。

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

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

  • 没有作用域修饰符的 枚举 的作用域从声明开始到声明它的文件的末尾。

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

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

  • 如果关键字 global 在声明之前,则这些标识符的作用域扩展到整个应用程序。应用程序文件中的任何代码都可以访问它们。

  • 如果关键字 public 在声明之前,则作用域扩展到显式包含声明标识符的文件的任何文件,或扩展到包含依次 public 包含包含 public 声明的文件的文件的任何文件。

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

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

广告