Erlang 变量

在 Erlang 中,所有的变量都与'='语句绑定。所有变量都需要使用大写字母开头。在其他编程语言中,'='号是用于分配变量的值,而在 Erlang 中却不是这样。如上所述,变量使用“=”语句来定义。

在 Erlang 中需要注意的一个关键问题是,变量是不可变的。这意味着如果要修改变量的值,它需要先销毁,并再次重新创建。

Erlang 中的基本变量将在最后一章解释

  • 数字 − 此用于表示整数或浮点数。一个例子是:10

  • 布尔− 这表示的一个布尔值可以是 true 或 false ;

  • 位字符串 − 位序列(字符串)用来存储非类型化的内存区域。一个例子是:<<40,50>>.

  • 元组− 元组是具有固定数量混合数据类型的术语。一个例子是: {40,50}.

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

  • 列表 − 列表是可变数量的混合数据类型的一个术语。一个例子是 [40,40].

变量声明

在 Erlang 中定义一个变量的一般语法如下

  1. var-name = var-value

在这里,

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

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

以下是变量声明的一个例子

示例

  1. -module(helloworld).
  2. -export([start/0]).
  3. start() ->
  4. X = 40,
  5. Y = 50,
  6. Result = X + Y,
  7. io:fwrite("~w",[Result]).

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

执行上面的程序,输出结果如下:

  1. 90

命名变量

如前所述,变量名必须以大写开始。让我们看看使用小写字母声明变量一个例子。

示例

  1. -module(helloworld).
  2. -export([start/0]).
  3. start() ->
  4. X = 40,
  5. Y = 50,
  6. result = X + Y,
  7. io:fwrite("~w",[Result]).

当我们尝试编译上面的程序,就会得到下面编译时错误。

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

其次,所有变量只能分配一次。让我们来看持分配变量多次的一个例子。

  1. -module(helloworld).
  2. -export([start/0]).
  3. start() ->
  4. X = 40,
  5. Y = 50,
  6. X = 60,
  7. io:fwrite("~w",[X]).

当我们尝试编译上面的程序,就会得到下面编译时错误。

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

打印变量

在本节中,我们将讨论如何使用各种函数来打印变量。

使用 io:fwrite 函数

看看这个 (io:fwrite) 在上述所有程序中的使用。fwrite函数是 Erlang “io” 模块的一部分,它可以用来输出程序中变量的值。

下面的例子列出了可与 fwrite 语句一起使用了几个参数。

  1. -module(helloworld).
  2. -export([start/0]).
  3. start() ->
  4. X = 40.00,
  5. Y = 50.00,
  6. io:fwrite("~f~n",[X]),
  7. io:fwrite("~e",[Y]).

执行上面的程序,输出结果如下:

  1. 40.000000
  2. 5.00000e+1

对上述程序以下几点应注意。

  • ~− 此字符标志着需要执行某些格式输出;

  • ~f −参数是 float 被写为 [-]ddd.ddd;

  • ~n− 类似于 println 输出一个新行;

  • ~e− 参数是 float 被写为 [-]d.ddde+-ddd ;