Euphoria - 变量
变量只不过是用于存储值的保留内存位置。 这意味着当您创建变量时,您会在内存中保留一些空间。
解释器根据变量的数据类型分配内存并决定保留内存中可以存储的内容。 因此,通过为变量分配不同的数据类型,您可以在这些变量中存储整数、小数或字符。 Euphoria 数据类型在不同章节中进行了解释。
这些内存位置称为变量,因为它们的值可以在其生命周期内更改。
变量声明
Euphoria 变量必须显式声明以保留内存空间。 因此,在为变量赋值之前必须先声明变量。
变量声明有一个类型名称,后跟所声明的变量列表。 例如 −
integer x, y, z sequence a, b, x
当您声明变量时,您可以为该变量命名,并定义在程序执行期间可以合法地将哪种类型的值分配给该变量。
声明变量的简单行为不会为其分配任何值。 如果您尝试在为其赋值之前读取它,Euphoria 将发出运行时错误,因为"变量 xyz 从未被赋值"。
赋值
等号 (=) 用于为变量赋值。 可以通过以下方式分配变量 −
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"分别是分配给 counter、miles 和 name 变量的值。 该程序产生以下结果 −
Value of counter 100 Value of miles 1000.000000 Value of name John
为了防止忘记初始化变量,也因为它可以使代码更清晰易读,您可以将声明和赋值结合起来 −
integer n = 5
这相当于以下内容 −
integer n n = 5
标识符范围
标识符的范围是对哪些代码可以访问它的描述。 与标识符相同范围内的代码可以访问该标识符,与标识符不在同一范围内的代码无法访问该标识符。
变量的范围取决于声明它的位置和方式。
如果它是在 for、while、loop 或 switch 中声明的,它的范围从声明开始,到相应的 end 语句结束。
在 if 语句中,范围从声明开始,到下一个 else、elsif 或 end if 语句结束。
如果在例程中声明变量,则变量的作用域从声明开始,到例程的结束语句结束。 这被称为私有变量。
如果变量是在例程外部声明的,则其作用域从声明处开始,到声明该变量的文件末尾结束。这称为模块变量。
没有作用域修饰符的常量的作用域,从声明处开始,到声明它的文件末尾结束。
没有作用域修饰符的枚举的作用域,从声明处开始,到声明它的文件的末尾结束。
所有没有范围修饰符的过程、函数和类型的范围,从源文件的开头开始,到声明它们的源文件的末尾结束。
没有作用域修饰符的常量、枚举、模块变量、过程、函数和类型被称为局部变量。 但是,这些标识符可以在其声明之前有一个作用域修饰符,这会导致它们的作用域扩展到声明它们的文件之外。
如果关键字global位于声明之前,则这些标识符的范围将扩展到整个应用程序。 可以通过应用程序文件中任何位置的代码访问它们。
如果关键字public位于声明之前,范围扩展到任何显式包含声明标识符的文件的文件,或任何包含 public 文件的文件,该文件又包含包含 public 声明的文件。
如果关键字export位于声明之前,则范围仅扩展到直接包含声明标识符的文件的任何文件。
当您在另一个文件中include(包含) Euphoria 文件时,只有使用范围修饰符声明的标识符才能被执行包含(包含)的文件访问。 包含文件中的其他声明对于执行 include 的文件是不可见的。