我也學erlang(三)

2022-03-10 23:18:25 字數 1203 閱讀 4727

開胃菜:

同名不同目的函式:所謂目就是指函式的引數。它們會被認為是兩個不同的函式,除了它們的名字恰巧相同之外,它們彼此沒有再沒有任何聯絡。

正題:fun:

fun就是乙個匿名函式,所謂匿名,是因為它沒有名字。我們來做點實驗,先定義乙個fun函式,然後把它賦給z。

11> z=fun(x)->2*x end

.#fun

當定義fun函式時,系統通常會列印出來一串奇怪的數字,先不用管他。

輸入:

12> z(2).

4

fun可以擁有任意數量的引數。比如:

13> hypot=fun(x,y)->math:sqrt(x*x+y*y) end

.#fun

14> hypot(3,4).

5.0

erlang是一種函式式程式語言,因此,除了幾個別情況,fun既可以作為函式的返回值,也可以作為函式的引數。這些以fun為引數或者返回fun的函式,稱為高階函式。

以fun為引數的函式

lists是標準庫中的乙個模組,從中匯出的很多函式都是以fun作為引數的。其中,最有用的是lists:map(f,l).這個函式將fun f應用到列表中的每個元素上,然後返回乙個列表。

假設剛剛的z函式我們重新定義為double。

15> double=z.

#fun

16> l=[1,2,3,4].

[1,2,3,4]

17>lists:map(double,l).

[2,4,6,8]

另乙個有用的函式是lists:filter(p,l),它返回乙個新列表,新列表由滿足條件p(e)的元素組成。

我們定義乙個函式even(x),

18> even=fun(x)->(x rem 2)=:=0 end

.#fun

19> even(8).

true

20> even(7).

false

21> lists:map(even,[1,2,3,4,5,6,7,8]).

[false,true,false,true,false,true,false,true

]22> lists:filter(even,[1,2,3,4,5,6,7,8]).

[2,4,6,8]

返回fun的函式

我也學erlang(四)

定義自己的控制流程 for erlang沒有for迴圈,我們先定義乙個 module loop for export for 3 for max,max,f f max for i,max,f f i for i 1,max,f 就這麼簡單,例如,對for 1,10,f 求值會生成列表 f 1 f ...

我也來寫個小總結 小白學git

學習git,首先要清楚幾個工作流 工作目錄 working copy 快取區 index 和頭 head 工作目錄 是我們的實際工作目錄 快取區 看了乙個有趣並且容易理解的解釋 1 當你投入開發時,會從gerrit 匯入乙個專案,並建立checkout自己的開發分支,此時我們的頭就指向這個分支最近一...

人生苦短,我學Python(三)

寫在文末的話 我們在程式編寫的過程當中,很有可能會使用不同的資料之間的對應關係,比如一系列單詞對應的翻譯資訊 一系列任命對應的 等,字典能夠讓我們的程式中資料元素之間的關係變得更加符合我們的需求,而不是自己建立對應關係。下面為最基本的字典用法 player print player name pri...