Erlang - 变量

在 Erlang 中,所有变量都与"="语句绑定。 所有变量都需要以大写字符开头。 在其他编程语言中,"="符号用于赋值,但在 Erlang 中则不然。 如前所述,变量是使用"="语句定义的。

在 Erlang 中需要注意的一个关键事项是变量是不可变的,这意味着为了更改变量的值,需要将其销毁并再次重新创建。

Erlang中的以下基本变量在上一章中有解释 −

  • Numbers − 这用于表示整数或浮点数。 例如 10。

  • Boolean − 这代表一个布尔值,可以是 true 也可以是 false。

  • Bit String − 位串用于存储非类型化内存区域。 一个例子是 <<40,50>>。

  • Tuple − 元组是一种具有固定数量项的复合数据类型。 一个例子是{40,50}。

  • Map − 映射是一种复合数据类型,具有可变数量的键值关联。 映射中的每个键值关联称为关联对。 一个例子是 {type=>person,age=>25}。

  • List − 列表是一种具有可变数量术语的复合数据类型。 一个例子是[40,40]。

变量声明

定义变量的一般语法如下 −

语法

var-name = var-value

其中,

  • var-name − 这是变量的名称。

  • var-value − 这是绑定到变量的值。

以下是变量声明的示例 −

示例

-module(helloworld). 
-export([start/0]). 

start() -> 
   X = 40, 
   Y = 50, 
   Result = X + Y, 
   io:fwrite("~w",[Result]).

在上面的例子中,我们有 2 个变量,一个是 X,它绑定到值 40,下一个是 Y,它绑定到值 50。另一个名为 Result 的变量绑定到 X 和 Y 的相加 。

上述程序的输出将是 −

输出

90

命名变量

正如所讨论的,变量名称必须以大写字母开头。 让我们举一个以小写形式声明的变量的示例。

示例

-module(helloworld). 
-export([start/0]). 

start() -> 
   X = 40, 
   Y = 50, 
   result = X + Y, 
   io:fwrite("~w",[Result]).

如果您尝试编译上述程序,您将收到以下编译时错误。

输出

helloworld.erl:8: variable 'Result' is unbound

其次,所有变量只能赋值一次。 让我们举一个多次赋值变量的例子。

示例

-module(helloworld). 
-export([start/0]). 

start() -> 
   X = 40, 
   Y = 50, 
   X = 60, 
   io:fwrite("~w",[X]).

如果您尝试编译上述程序,您将收到以下编译时错误。

输出

helloworld.erl:6: Warning: variable 'Y' is unused
helloworld.erl:7: Warning: no clause will ever match
helloworld.erl:7: Warning: the guard for this clause evaluates to 'false'

打印变量

本节我们将讨论如何使用打印变量的各种功能。

使用 io:fwrite 函数

您可能已经在上述所有程序中看到过这个 (io:fwrite) 的使用。 fwrite函数是'io'模块或Erlang的一部分,可用于输出程序中变量的值。

以下示例显示了可与 fwrite 语句一起使用的更多参数。

示例

-module(helloworld). 
-export([start/0]). 

start() -> 
   X = 40.00, 
   Y = 50.00, 
   io:fwrite("~f~n",[X]), 
   io:fwrite("~e",[Y]).

上述程序的输出将是 −

输出

40.000000
5.00000e+1

关于上述程序,应注意以下几点。

  • ~ − 该字符表示输出需要进行一些格式化。

  • ~f − 参数是一个浮点数,写为 [-]ddd.ddd,其中精度是小数点后的位数。 默认精度为6,且不能小于1。

  • ~n − 这是 println 到一个新行。

  • ~e − 参数是一个浮点数,写为 [-]d.ddde+-ddd,其中精度是写入的位数。 默认精度为 6,且不能小于 2。