最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Erlang的一些編程技巧分享

 更新時間:2015年01月12日 09:01:18   投稿:junjie  
這篇文章主要介紹了Erlang的一些編程技巧分享,本文是是實際編程中的個人總結(jié),需要的朋友可以參考下

guard

guard可以以逗號或者分號分隔,以逗號分隔表示最終的結(jié)果為各個guard的and結(jié)果,以分號則是只要任意一個guard為true則最終結(jié)果為true。

復(fù)制代碼 代碼如下:

guard(X, Y) when not(X>Y), is_atom(X) ->
    X + Y.

guard在list comprehension中可以篩選元素:
復(fù)制代碼 代碼如下:

NewNodes  = [Node || Node <- AllNodes, not gb_sets:is_member(Node, NewQueried)],

guard中不能使用自定義函數(shù),因為guard應(yīng)該保證沒有副作用,但自定義函數(shù)無法保證這一點,所以erlang禁止在guard中使用自定義函數(shù)。

list comprehension

list comprehension是一個非常有用的語法特性,它可以用于構(gòu)造一個新的list,可以用于將一種list映射到另一種list,可以篩選list元素。只要是跟list相關(guān)的操作,優(yōu)先考慮用list comprehension來實現(xiàn),將大大減少代碼量。記住list comprehension的語法:

復(fù)制代碼 代碼如下:

[Expression || Generators, Guards, Generators, ...]
timer

一定時間后向進(jìn)程發(fā)送消息:
復(fù)制代碼 代碼如下:

erlang:send_after(token_lifetime(), self(), renew_token),

一段時間后執(zhí)行某個函數(shù):
復(fù)制代碼 代碼如下:

{ok, TRef} = timer:apply_interval(Interval, ?MODULE, announce, [self()]),

gb_trees/gb_set

pattern match

pattern match有太多作用了:

pattern match in case

case中判定多個值,比其使用邏輯運算符簡潔多了:

復(fù)制代碼 代碼如下:

A = 1, B = 2,
case {A, B} of
    {_C, _C} -> true;
    {_, _} -> false
end

pattern match to check data type

pattern match可以用于檢測變量的類型,可以用于檢測函數(shù)的返回值,就像C/C++中的assert一樣,可以用于盡早檢測出異常狀態(tài):

復(fù)制代碼 代碼如下:

ping({_, _, _, _} = IP, Port) ->
    ok.
{ok, Ret} = call().

list操作

添加元素

添加元素進(jìn)list有很多方式:

復(fù)制代碼 代碼如下:

[2]++[3, 4].
[2|[3,4]].

foldl/foldr

用于遍歷list計算出一個“累加值“。

復(fù)制代碼 代碼如下:

lists:foldl(fun(X, Sum) -> X + Sum end, 0, [1,2,3,4,5]).

也就是遍歷一個list,將每個元素傳遞給fun,將fun的返回值繼續(xù)傳遞給下一個元素。

zip

將兩個list一一對應(yīng)構(gòu)造出一個tuple,作為新的list里的元素。

復(fù)制代碼 代碼如下:

lists:zip([1, 2, 3], [4, 5, 6]).
    => [{1,4},{2,5},{3,6}]

數(shù)字進(jìn)制

16##FF,表示16進(jìn)制數(shù)字0xFF,通用格式為scale##num,即scale進(jìn)制下的num。

相關(guān)文章

  • Erlang初學(xué):Erlang的一些特點和個人理解總結(jié)

    Erlang初學(xué):Erlang的一些特點和個人理解總結(jié)

    這篇文章主要介紹了Erlang初學(xué):Erlang的一些特點和個人理解總結(jié),本文總結(jié)了函數(shù)式編程、一切都是常量、輕量進(jìn)程、進(jìn)程端口映射及典型缺點等內(nèi)容,需要的朋友可以參考下
    2015-02-02
  • Erlang中的函數(shù)與流程控制介紹

    Erlang中的函數(shù)與流程控制介紹

    這篇文章主要介紹了Erlang中的函數(shù)與流程控制介紹,本文先是講解了函數(shù)的一些知識,然后講解了case語句和if語句及算術(shù)表達(dá)式等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • Erlang實現(xiàn)的一個Web服務(wù)器代碼實例

    Erlang實現(xiàn)的一個Web服務(wù)器代碼實例

    這篇文章主要介紹了Erlang實現(xiàn)的一個Web服務(wù)器代碼實例,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2015-04-04
  • Erlang項目內(nèi)存泄漏分析方法

    Erlang項目內(nèi)存泄漏分析方法

    這篇文章主要介紹了Erlang項目內(nèi)存泄漏分析方法,本文講解了分析方法、分析流程并找到問題原因和解決方法,需要的朋友可以參考下
    2015-02-02
  • Erlang中的socket編程簡單例子

    Erlang中的socket編程簡單例子

    這篇文章主要介紹了Erlang中的socket編程簡單例子,本文給出了TCP服務(wù)器echo示例、Tcp 的echo客戶端示例、UDP server示例、UDP client 示例,需要的朋友可以參考下
    2015-03-03
  • Erlang中3種生成隨機數(shù)的方法

    Erlang中3種生成隨機數(shù)的方法

    這篇文章主要介紹了Erlang中3種生成隨機數(shù)的方法,它們分別是random:uniform()、erlang:now()、crypto:strong_rand_bytes(N),需要的朋友可以參考下
    2015-01-01
  • Erlang中的匹配模式總結(jié)

    Erlang中的匹配模式總結(jié)

    這篇文章主要介紹了Erlang中的匹配模式總結(jié),本文講解了賦值時匹配、流程控制中的匹配、消息傳遞匹配等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • Erlang分布式節(jié)點中的注冊進(jìn)程使用實例

    Erlang分布式節(jié)點中的注冊進(jìn)程使用實例

    這篇文章主要介紹了Erlang分布式節(jié)點中的注冊進(jìn)程使用實例,本文直接給出實例代碼,需要的朋友可以參考下
    2015-02-02
  • erlang?on_load_function_failed排查過程解析

    erlang?on_load_function_failed排查過程解析

    這篇文章主要為大家介紹了erlang?on_load_function_failed的排查過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Erlang并發(fā)編程介紹

    Erlang并發(fā)編程介紹

    這篇文章主要介紹了Erlang并發(fā)編程介紹,本文講解了進(jìn)程的創(chuàng)建 、進(jìn)程間通信、超時設(shè)置以及給出代碼實例,需要的朋友可以參考下
    2015-01-01

最新評論

三穗县| 民勤县| 曲靖市| 鄂温| 韶关市| 河曲县| 长白| 榕江县| 藁城市| 林西县| 黄大仙区| 温泉县| 杭州市| 本溪市| 静海县| 厦门市| 巨鹿县| 和龙市| 永川市| 邛崃市| 霍邱县| 恭城| 平山县| 化州市| 嘉定区| 廊坊市| 文水县| 颍上县| 从化市| 寿光市| 黔东| 永登县| 孝感市| 舒城县| 延庆县| 金乡县| 阜宁县| 岳阳县| 澎湖县| 曲周县| 如皋市|