Erlang 变量
在 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 ;