在 Erlang,所有的變量都與‘ =’語句綁定。所有變量都需要以大寫字母開頭。在其他編程語言中,“ =”符號(hào)用于賦值,但不適用于 Erlang。如前所述,變量是通過使用‘ =’語句定義的。
在Erlang中要注意的一件事是變量是不可變的,這意味著為了更改變量的值,需要將其銷毀并重新創(chuàng)建。
上一章介紹了Erlang中的以下基本變量-
Numbers?用于表示整數(shù)或浮點(diǎn)數(shù)。例如:10。
Boolean ?這表示布爾值,可以為true或false。
Bit String?使用位串存儲(chǔ)未類型的內(nèi)存區(qū)域。例如:<< 40,50 >>。
Tuple?元組是具有固定數(shù)量項(xiàng)的復(fù)合數(shù)據(jù)類型。例如:{40,50}。
Map?映射是具有可變數(shù)量的鍵-值關(guān)聯(lián)的復(fù)合數(shù)據(jù)類型。映射中的每個(gè)鍵值關(guān)聯(lián)都稱為關(guān)聯(lián)對(duì)。例如:{type => person,age => 25}。
List?列表是具有可變項(xiàng)數(shù)的復(fù)合數(shù)據(jù)類型。例如:[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個(gè)變量,一個(gè)是綁定到值40的X,另一個(gè)是綁定到值50的Y。另一個(gè)名為Result的變量綁定到X和Y的加法。
上面程序的輸出將是
90
如上所述,變量名必須以大寫字母開頭。讓我們以小寫聲明的變量為例。
-module(helloworld). -export([start/0]). start() -> X = 40, Y = 50, result = X + Y, io:fwrite("~w",[Result]).
如果嘗試編譯上述程序,則會(huì)出現(xiàn)以下編譯時(shí)錯(cuò)誤。
helloworld.erl:8: variable 'Result' is unbound
其次,所有變量只能分配一次。讓我們舉一個(gè)不只一次分配一個(gè)變量的實(shí)例。
-module(helloworld). -export([start/0]). start() -> X = 40, Y = 50, X = 60, io:fwrite("~w",[X]).
如果您嘗試編譯上述程序,則會(huì)收到以下編譯時(shí)錯(cuò)誤。
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é)中,我們將討論如何使用打印變量的各種功能。
您應(yīng)該已經(jīng)在以上所有程序中看到了此(io:fwrite)。fwrite函數(shù)是“ io”模塊或Erlang的一部分,可用于在程序中輸出變量的值。
以下示例顯示了可以與fwrite語句一起使用的更多參數(shù)。
-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
關(guān)于上述程序,應(yīng)注意以下幾點(diǎn)。
~ ?此字符表示需要對(duì)輸出進(jìn)行一些格式化。
~f?參數(shù)為浮點(diǎn)數(shù),寫為[-] ddd.ddd,其中precision是小數(shù)點(diǎn)后的位數(shù)。缺省精度為6,且不能小于1。
~n?println這是打印到新行。
~e?參數(shù)為浮點(diǎn)數(shù),寫為[-] d.ddde + -ddd,其中precision是寫入的位數(shù)。缺省精度為6,且不能小于2。