Erlang中的fun函式使用詳解
阿新 • • 發佈:2019-02-08
先看一個Erlang的規定:在Eralng中,同一個模組中的兩個函式,如果她們同名但是它們的目(arity)不同,這樣的兩個函式被認為是完全不同的兩個函式。通常情況下,這樣的函式被用作輔助函式。
fun函式就是一個匿名函式(因為他自己沒有名字),但就這個匿名函式,用處卻是很大的。fun既可以作為函式的引數,也可以作為函式(或者自己本身fun)的返回結果。
現在,我們再來看一下fun函式的簡單使用:
當我們定一個fun的時候,會出現
Triple = fun(X) -> 3*X end.
是定義一個fun,只有一個引數量,也就是隻有一個目,在fun結束的時候,需要將end加在後面的。當我們要呼叫它的時候,直接使用Triple,然後加上引數就行了。
注:本部落格的例子可能許多都是來自Joe Armstrong的《Erlang程式設計》一書,或者在原來基礎上稍加改變。
我們再來詳細的學習這個fun:
1.用fun作為函式的引數
上面的例子是隻有一個引數,相信大家都能看懂。現在看一下使用多個引數時的情景。
很容易看懂吧,其中的math是一個模組,sqrt是其中的一個函式,是用來計算平方根的。
fun也可以有若干個不同的子句。
比如下面的星期轉換:
2.以fun作為引數的函式
lists是標準庫中的一個模組,從中匯出的很多函式都是以fun作為引數的函式,比如,map,filter等。下面是一個測試:
在這個例子當中,map的第一個引數即為fun。
3.
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script> 閱讀(4469) | 評論(0) | 轉發(0) | 給主人留下些什麼吧!~~ 評論熱議
fun函式就是一個匿名函式(因為他自己沒有名字),但就這個匿名函式,用處卻是很大的。fun既可以作為函式的引數,也可以作為函式(或者自己本身fun)的返回結果。
現在,我們再來看一下fun函式的簡單使用:
|
#Fun<erl_eval...>
之類的東西,我自己也不清楚,不過先不要管這個。我們繼續往下看。Triple = fun(X) -> 3*X end.
是定義一個fun,只有一個引數量,也就是隻有一個目,在fun結束的時候,需要將end加在後面的。當我們要呼叫它的時候,直接使用Triple,然後加上引數就行了。
注:本部落格的例子可能許多都是來自Joe Armstrong的《Erlang程式設計》一書,或者在原來基礎上稍加改變。
我們再來詳細的學習這個fun:
1.用fun作為函式的引數
上面的例子是隻有一個引數,相信大家都能看懂。現在看一下使用多個引數時的情景。
|
fun也可以有若干個不同的子句。
比如下面的星期轉換:
|
lists是標準庫中的一個模組,從中匯出的很多函式都是以fun作為引數的函式,比如,map,filter等。下面是一個測試:
|
3.
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script> 閱讀(4469) | 評論(0) | 轉發(0) | 給主人留下些什麼吧!~~ 評論熱議