当前位置: 首页 > 教程 > Erlang >

Erlang变量

精华
小牛编辑
180浏览
2023-03-14
在 Erlang 中,所有的变量都与'='语句绑定。所有变量都需要使用大写字母开头。在其他编程语言中,'='号是用于分配变量的值,而在 Erlang 中却不是这样。如上所述,变量使用“=”语句来定义。
在 Erlang 中需要注意的一个关键问题是,变量是不可变的。这意味着如果要修改变量的值,它需要先销毁,并再次重新创建。
Erlang 中的基本变量将在最后一章解释 -
  • 数字 − 此用于表示整数或浮点数。一个例子是:10 

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

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

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

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

  • 列表 − 列表是可变数量的混合数据类型的一个术语。一个例子是 [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 ;