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 ; 


上一篇: Erlang數據類型 下一篇: Erlang運算符