在 Erlang,所有的變量都與‘ =’語句綁定。所有變量都需要以大寫字母開頭。在其他編程語言中,“ =”符號用于賦值,但不適用于 Erlang。如前所述,變量是通過使用‘ =’語句定義的。
在Erlang中要注意的一件事是變量是不可變的,這意味著為了更改變量的值,需要將其銷毀并重新創(chuàng)建。
上一章介紹了Erlang中的以下基本變量-
Numbers?用于表示整數或浮點數。例如:10。
Boolean ?這表示布爾值,可以為true或false。
Bit String?使用位串存儲未類型的內存區(qū)域。例如:<< 40,50 >>。
Tuple?元組是具有固定數量項的復合數據類型。例如:{40,50}。
Map?映射是具有可變數量的鍵-值關聯的復合數據類型。映射中的每個鍵值關聯都稱為關聯對。例如:{type => person,age => 25}。
List?列表是具有可變項數的復合數據類型。例如:[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'
在本節(jié)中,我們將討論如何使用打印變量的各種功能。
您應該已經在以上所有程序中看到了此(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,其中precision是小數點后的位數。缺省精度為6,且不能小于1。
~n?println這是打印到新行。
~e?參數為浮點數,寫為[-] d.ddde + -ddd,其中precision是寫入的位數。缺省精度為6,且不能小于2。