开发学院

您的位置:首页>教程>正文

教程正文

Erlang 变量

Erlang 变量

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

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

  Erlang 中的基本变量将在后面解释:

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

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

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

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

  •   映射:映射是用 键-值关联的可变数量的复合数据类型。映射中的每个键值关联称为关联对。

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

变量声明

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

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 相加的值:50 。

  下面是上述代码的输出:

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函数是 Erlang 语言的“io” 模块的一部分,它可以用来输出程序中变量的值。

  下面的例子列出了可与 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:参数是 float 被写为 [-]ddd.ddd; 

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

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