📜  Euphoria-变量

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


 

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

解释器根据变量的数据类型分配内存,并确定可以在保留内存中存储的内容。因此,通过为变量分配不同的数据类型,可以在这些变量中存储整数,小数或字符。欣快感数据类型在不同的章节中进行了说明。

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

变量声明

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

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

integer x, y, z

sequence a, b, x

声明变量时,可以为变量命名,并定义在程序执行过程中可以合法分配给该变量的值的种类。

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

赋值

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

Variable_Name =变量值

例如-

#!/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,elsifif结束处结束
  • 如果在例程中声明了变量,则变量的范围从声明开始,到例程的end语句结束。这被称为私有变量。
  • 如果在例程外部声明了变量,则其作用域从声明开始并在声明所在文件的末尾。这称为模块变量。
  • 没有作用域修饰符的常量的作用域始于声明,结束于声明该文件的文件的末尾。
  • 没有范围修饰符的枚举的范围从声明开始,在声明它的文件的结尾和结尾。
  • 没有范围修饰符的所有过程,函数类型的范围始于源文件的开头,并在声明它们的源文件的末尾结束。

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

  • 如果关键字global在声明之前,则这些标识符的范围将扩展到整个应用程序。可以通过代码在应用程序文件中的任何位置访问它们。
  • 如果关键字公众之前的声明,该范围延伸到明确地包括其中所述标识符被声明的文件,或者其包括一个文件,它反过来公共包括包含公共声明该文件的任何文件中的任何文件。
  • 如果关键字export在声明之前,则作用域仅扩展到直接包含声明了标识符的文件的任何文件。

在另一个文件中的幸福感文件,只有使用的标识符作用域修饰符是文件做包括无障碍声明。包含文件中的其他声明对包含include的文件不可见。