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("fn",[X]),
io:fwrite("~e",[Y]).

執行上面的程序,輸出結果如下: 

40.000000
5.00000e+1

對上述程序以下幾點應注意。

  • ~ − 此字符標誌着需要執行某些格式輸出;

  • ~f −參數是 float 被寫爲 [-]ddd.ddd; 

  • ~n − 類似於 println 輸出一個新行; 

  • ~e − 參數是 float 被寫爲 [-]d.ddde+-ddd ;