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 ;