Erlang - 变量



在 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]).

在上面的例子中,我们有两个变量,一个是 X,绑定到值 40,另一个是 Y,绑定到值 50。另一个名为 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 函数是 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 - 参数是一个浮点数,写为 [-]ddd.ddd,其中精度是小数点后数字的个数。默认精度为 6,不能小于 1。

  • ~n - 用于println到新行。

  • ~e - 参数是一个浮点数,写为 [-]d.ddde+-ddd,其中精度是写入的数字个数。默认精度为 6,不能小于 2。

广告