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 ;