erlang常見基礎

2021-07-16 03:29:17 字數 2391 閱讀 9783

每乙個檔案通常稱為乙個模組(module),需要特別注意的是在這一行末尾的」.」,這個是不可或缺的。每乙個模組的名稱必須和它的檔名一樣

注意這裡的結尾是」;」

,表明這個方法還沒有結束

在函式中的引數」n,x,y」我們稱之為變數。變數的首字母需要大寫

常量是erlang的另一種資料型別。

常量以小寫字母開頭

常量就是乙個簡單的名字

,不像變數一樣擁有值。

在erlang裡我們可以把一些事件/事物集中在一起以便更好地理解,我們稱之為元組,元組會被」」這樣一對括號包含。

或定義為:將一定數量項組成在一起,就形成了乙個單一的實體,並且若干個項之間使用逗號隔開,形成的整個實體使用{}括起來,這樣就形成了乙個元組。

一旦元組建立之後,

元組項的個數就不能再變化了

。其實元組就是原子。

可以將乙個函式的返回值作為另乙個函式的引數傳入.

元組有固定的內部的組成數量。

我們稱在元組中的東西為元素。

我們稱被」[","]「所包圍的一組事物為列表.。或定義為: 將不定數量的項組在一起,再加上括號,就形成了列表。列表的每一項可以是元組,也可以仍是列表,即列表是可以允許巢狀使用的。

用「|」是乙個非常的用於檢視列表中的部分元素。

使用」|」來把第乙個元素和剩下的元素分離開來

列表和元素的區別

1.列表中的元素個數是可變的,而元組的數目是在建立後就固定的。

建立乙個列表之後,我們仍然可以往其中增加項,當然可以刪除項,因此列表使用的話比較靈活一些,而元組則不可以。

2.建立的方式不同

在宣告元組的時候,就自動建立了乙個元組。而對於列表來說,建立乙個列表有兩種方式,一種是直接定義,例如:f=[abc];另外一種是在已經建立的基礎上再次新增乙個項,那新構成的這個仍然是列表。

3.取值方式不同

從元組中提取字段值的時候,我們一般使用的是「=」來提取,而對於列表來說,使用的仍然還是模式匹配,只不過對於列表來說的話,我們每一次只能提取這個列表的頭部,也就說一次只能提取乙個項。

4.在函式使用上的區別

這裡我們還有乙個需要注意的地方,在我們寫erlang程式的時候,通常的返回值如果是元組的話,我們使用乙個變數進行匹配是可以的

列表中的元素可以是元組,而元組中的元素則不可以為列表.

算術表示式由以下運算子構成:

單目運算子有乙個引數,雙目運算子有兩個引數。混合意味著引數即可以是integer 也可以是float。單目運算子的返回值與其引數型別相同。

雙目混合運算子(即*、-、+)在引數都是integer時返回型別為integer的物件,在引數至少包含乙個float時返回乙個float。浮點除法運算子/總是返回乙個float。

雙目整數運算子(即band、div、rem、bor、bxor、bsl、bsr)的引數必須是整數,其返回值也是整數。

求值順序取決於運算子的優先順序:首先計算第1優先順序的運算子,然後是第2優先順序,以此類推。括號內的表示式優先求值。

優先順序相同的運算子從左到右進行求值。比如:

a - b - c - d

其求值順序與下面的表示式一致:

(((a - b) - c) - d)

方法 format/2 (此方法擁有兩個引數)需要兩個列表。第乙個列表通常寫在「」之間,這個列表會作為輸出的標準,其中的~w會被第二個列表中的元素所取代。每乙個 ~n 表示另起一行(換行)。如何一切執行正常 io:format/2 本身會返回乙個」ok」。就像eralng其他方法一樣,io:format/2當遇到錯誤時也會終止執行。

但是需要注意的是即使 io:format崩潰了,但是 erlang shell 自身不會崩潰。

~-15w意思為該元素的限定在15個字元的長度

注意,在end前面的最後乙個條件是沒有「;」的!這裡的判定條件和界定(guard)是一樣的,測試條件的真或假。erlang從最高處開始執行,直到它找到乙個為真的條件,並執行其內部的**,並且很重要的是它將忽略其他剩下的條件,不論其他剩下的條件中是否還有為真的情況。乙個條件當是常量的時候意味著永遠為真,true和常量(atoms)常常用來作為if的最後乙個條件。作為當其他所有條件都為假時的執行出口。

內建函式bifs是一些處於某些理由構建在erlang虛擬機器內部的函式。bifs常常實現功能性的操作,而這些操作可能是很難在erlang中直接實現的,或者說是實現起來沒有效率的。

erlang具有處理併發和分布式計算的程式設計能力

函式spawn返回乙個程序識別符號(也就是耳熟能詳的pid),用來唯一表示乙個程序的。

「~p」大體上和「~w」輸出是一致的,但是會將過長的可列印的片語切分為多行,並且明顯的縮排每行。這也是將可列印字元作為字串輸出的常見方法。

erlang基礎練習 排序

module sort export bubble 1,select1 1,select2 1 氣泡排序法 第一種 bubble l bubble sort l,length l 1 bubble sort l,0 l bubble sort h t num result bubble once h...

Erlang 基礎程式設計套路

有一段時間沒有寫 erlang 程式了,近日有個小夥伴要幫忙,給了我幾個小練習,讓我寫寫看。雖然寫得有點慢,畢竟還是完成了。突發靈感,erlang有沒有什麼 程式設計套路 呢?初學 erlang 者大部分都感嘆 太逆天了 個人認為,掌握erlang 程式設計邏輯兩個基本點就是模式匹配和遞迴思想。而遞...

erlang專案常見OTP行為模式

最近學習erlang有一些眉目了。在使用otp進行erlang專案開發時,會遇到很多otp的行為模式。而這種行為模式,有一些像面像物件中的設計模式。了解了這些東西,可以更好的使用otp庫進行erlang專案開發。起到了事半功倍的效果。下邊是我最近學習的過程中見到的行為模式,我們從乙個專案的建立開始。...