日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

erlang小技巧

發(fā)布時間:2023/12/1 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 erlang小技巧 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
.列表操作?

lists:foreach(fun(X) -> io:format("E=~p~n",[X]) end, [1,2,3]).?
lists:duplicate(10, 16#f).? % [15,15,15,15,15,15,15,15,15,15]?

"abc-123" -> "abc"?
no_vsn(Name) ->?lists:takewhile(fun($-)->false;(_)-> true end,Name).?

"abc-123" -> "123"?
vsn(Name) ->?
??? case?lists:dropwhile(fun($-)->false;(_)->true end,Name) of?
??? [_Sep|Vsn] -> Vsn;?
??? _ -> "0"?
??? end.?

取偶數(shù)?
EvenN =?lists:filter(fun (N) -> N rem 2 == 0 end, lists:seq(1,100))?


lists:foldl(fun(F, Last) -> F(Last) end, foo(), [fun whee/1, fun bar/1])?


將URL中的空格換成+?
UW =?lists:map(fun($ )->$+;(C)->C end,Words)?

判斷是否為空格?
is_nb_space(X) ->?
????lists:member(X, [$\s, $\t]).?

>Data = [{"apple", "red"}, {"banana", "yellow"}, {"pear", "white"}].?
>lists:keymember("pear",1,Data).?
? true?
>lists:keydelete("banana",1,Data).?
? [{"apple","red"},{"pear","white"}]?
>lists:keyreplace("apple",1,Data,{"tomato", "red"}).?
? [{"tomato","red"},{"banana","yellow"},{"pear","white"}]?

> rd(user,{id,name}).?? %% 用戶記錄?
>?lists:keysearch("wang", #user.name, [#user{id=1,name="li"}, #user{id=2,name="wang"}]).?
> {value,#user{id = 2,name = "wang"}}?


.二進制操作?

-define(BYTE, 8/unsigned-big-integer).?
<<C:2/unit:?BYTE>> 意思就是取兩個單位,每單位8bits。?

unit的默認值取決于type,如果type是integer或者float,則為1,binary為8。?
<<C:4/binary, _/binary>> 意思就是取4個單位,每單位8比特,總共4*8比特?


.位操作?
??? O2 = ((C1?band?16#03)?bsl?4)?bor?(C2?bsr?4).?

. 文件操作?
Destination =?filename:join([code:root_dir(), "include", no_vsn( New_lib )]),????????????file:make_dir(Destination),?

lists:foreach( fun(File) ->?
??? FileName =?lists:last(string:tokens(File,"/\\")),?
????file:copy(File, filename:join([Destination,FileName]))?
??? end,?filelib:wildcard(filename:join([Source,"*"])) ).?

remove(Path, File) ->?
??? Desc = filename:join([Path,File]),?
??? case?filelib:is_dir(Desc) of?
??? true ->?
??????? case file:list_dir(Desc) of?
??????? {ok,Sub} -> lists:foreach(fun(S) -> remove(Desc,S) end,Sub);?
??????? {error,Reason} -> io:format("error: ~p~n",[Reason])?
??????? end,?
????????file:del_dir(Desc);?
??? false ->?
????????file:delete(Desc)?
??? end.?

uncompress(Archive) ->?
??? case?file:read_file(Archive) of?
??? {ok,Tgz} ->?
??????? Tar =?zlib:gunzip(Tgz),?
????????erl_tar:extract({binary,Tar},[{cwd,code:lib_dir()}]);?
??? Error ->?
??????? Error?
??? end.?


.日期,時間操作?
{{Y,M,D},{H,M,S}} =?calendar:local_time().?
calendar:day_of_the_week(2009,2,24).?


.字符串操作?

格式化字符串, 像C語言的sscanf()?
Cmd =?io_lib:format(\"cd ~s/include; rm ~s; ln -s ../lib/~s/include ~s\", [code:root_dir(), no_vsn( New_lib ), New_lib, no_vsn( New_lib )]),?
os:cmd(Cmd);?

PN = [erlang:list_to_integer(N) || N <-?string:tokens( vsn( Package_that_might_be_newer ), "." )],?

packages_from_html(Html,Packages) ->?
??? case?string:str(Html,"class=\"package\"") of?
??? 0 -> Packages;?
??? Start ->?
??????? Sub =?string:sub_string(Html,Start),?
??????? T1 = string:sub_string(Sub,string:chr(Sub,$>)+1),?
??????? PName = string:sub_string(T1,1,string:chr(T1,$<)-1),?
??????? T2 = string:sub_string(T1,string:str(T1,"<i>")+3),?
??????? Descr = string:sub_string(T2,1,string:str(T2,"</i>")-1),?
??????? packages_from_html(T2,[{PName,Descr}|Packages])?
??? end.?

. mnesia相關(guān)操作?

$erl -mnesia dir '"/home/sw2wolf/data"' -s mnesia start?

-record(hitNum, {?
??? oid,?
??? hitnum?
}).?

% 在指定節(jié)點創(chuàng)建schema用數(shù)據(jù)表?

install( Nodes ) when is_list( Nodes ) ->?
????mnesia:stop(),?
????mnesia:delete_schema( Nodes ),?
??? catch (?mnesia:create_schema( Nodes ) ),?
????mnesia:start(),?
??? case?mnesia:create_table?( hitNum, [?
??????? { disc_copies, Nodes },?
??????? { type, set },?
??????? { attributes, record_info( fields, hitNum) }?
??? ] ) of?
??????? { atomic, ok } -> ok;?
??????? _Any ->?
??????????? io:format( "create table error!~n")?
??? end,?
??? mnesia:stop(),?
??? ok.?

%增加記錄?
add_hitnum(HitNums) ->?
??? F = fun() ->?
??????????? lists:foreach( fun?mnesia:write/1, HitNums)?
??????? end,?
????mnesia:transaction( F ).?

%查尋?
qry_hitnum() ->?
??? Q =?qlc:q( [X || X? <-?mnesia:table(hitNum)] ),?
??? F = fun() ->?qlc:e( Q ) end,?
??? { atomic, Val } = mnesia:transaction( F ),?
??? lists:sort(Val).?

轉(zhuǎn)載于:https://www.cnblogs.com/orez88/articles/1831188.html

總結(jié)

以上是生活随笔為你收集整理的erlang小技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。