📜  Erlang-变量

📅  最后修改于: 2020-11-04 05:48:57             🧑  作者: Mango


在Erlang中,所有变量都以’=’语句绑定。所有变量都需要先从大写字符。在其他编程语言中,“ =”符号用于分配,但在Erlang中不使用。如前所述,变量是使用’=’语句定义的。

在Erlang中要注意的一件事是变量是不可变的,这意味着要更改变量的值,需要将其销毁并重新创建。

上一章解释了Erlang中的以下基本变量-

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

  • 布尔值-这表示布尔值,可以为true或false。

  • 位字符串-位字符串用于存储未类型的内存区域。一个示例是<< 40,50 >>。

  • 元组-元组是具有固定数量项的复合数据类型。一个示例是{40,50}。

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

  • 列表-列表是具有可变项数的复合数据类型。一个例子是[40,40]。

变量声明

定义变量的一般语法如下-

句法

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个变量,一个是绑定到值40的X,另一个是绑定到值50的Y。另一个名为Result的变量绑定到X和Y的加法。

上面程序的输出将是-

输出

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函数是’io’模块或Erlang的一部分,可用于在程序中输出变量的值。

以下示例显示了可以与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 -的参数是,其被写为一个浮[ – ] ddd.ddd,其中所述精度是小数点后的位数。缺省精度为6,且不能小于1。

  • 〜N -这是给println到一个新行。

  • 〜戊-的参数是,其被写为一个浮[ – ] d.ddde&加;滴滴滴,其中所述精度是书面的位数。缺省精度为6,且不能小于2。