erlang 順序程式設計 記錄與對映組03

2021-09-25 08:16:55 字數 2211 閱讀 6787

記錄其實就是元組的另一種形式。儲存與效能特性和元組一樣。

應用場景:

建立--讀取--更新

//建立

-record(todo,).

//讀取shell裡,shell編譯

rr("records.hrl").

//建立乙個副本

#todo{}.

//建立乙個副本並修改元素

x1 = #todo.

//以x1為副本建立,並修改其中元素

x2 = x1#todo.

模式匹配提取字段

#todo = x2.

w.txt.

獲取單個元素,使用點

x2#todo.
匹配記錄

do_something(x) when is_record(x,todo) -> ......
可以上記錄忘記自己的定義,程式設計元組

x2 = todo.

rf(todo).

//顯示[todo,done,joe,"fix"]元組

x2.

對映組比元組佔 用

更多的儲存空間

,查詢起來也

更慢。而另一方面,對映組比元組要

靈活得多。

應用場景

特性:建立,

facts = # => "sue", => 45, => ["feng"]        

}.

k => v  有則更新,沒有則新增

k :=  v 有則更新,沒有則報錯(推薦:首次新增使用=>,修改全使用:=)

d1 = , 

d2 = d1#,

erlang裡的深度複製其實只複製了必要的部分(修改過的),效率很快,輕量級。

獲取值

h = #.

# = h.

//獲取到1491

b.

獲取字串重複數字對應的ascii碼

count(str) -> 

count(str,#{}).

count([h|t],# = x) ->

count(t,x#);

count([h|t],x) ->

count(t,x#);

count(,x) ->

x.

//建立乙個空對映組

maps:new().

//判斷k是否是對映組

erlang:is_map(k).

//對映組轉列表,會按照key公升序排列

maps:to_list(m).

//其他資料轉對映組

maps:from_list(m).

//對映組長度

maps:map_size(map).

//檢視是否有key 這個鍵

maps:is_key(key,map).

//通過key獲取value,沒有拋異常

maps:get(key,map).

//通過key獲取value,沒有返回error

maps:find(key,map).

//獲取所有的key

maps:keys(map).

//刪除乙個元素,其實是返回乙個新對映表,去除需要刪除的元素

maps:remove(key,m).

//同上刪除,這個是同時刪除多個

maps:without([key1,key2...],m).

//同上刪除,需要刪除的是乙個對映組存放需要刪除的資料m2

maps:difference(m1,m2).

兩個對映組比較大小。1.比較長度,2.依照key的順序,依次比較value(前乙個value相同比較後乙個)

io:format裡的 ~p輸出,並用

io:read

或file:consult

讀取

//轉成json二進位制(必須符合json格式的資料才行)

maps:to_json(map).

//json二進位制轉對映組

maps:from_json(bin).

//同上轉對映組。(裡面的原子必須是已經存在的,不能是新增)

maps:safe_from_json(bin).

Erlang 記錄和對映組

對映組 是鍵 值對的關聯性集合。記錄 是元組的另一種表示形式,它的儲存與效能特性和元組一樣。記錄的語法形式 record name,說明 name 為記錄的名稱,key1,key2為記錄的各個字段必須為原子。記錄的定義可以儲存在erlang源 檔案裡,也可以由擴充套件名為.hrl的檔案儲存,然後包含...

Erlang順序型程式設計高階

元組轉換成列表 1 tuple to list 12,cat,hellp 返回當前時分秒 2 time 1 5,10,20 5,10,20 2 hello hello 3 99,97,116 cat 1 bin1 1,2,3 1,2,3 2 bin2 4,5 4,5 3 bin3 6 6 4 lis...

Erlang(6) 記錄和對映組

記錄record 是元組的另一種形式 record name,記錄比較像c 的結構和類。hrl有點想c 的.h檔案 test.hrl record todo,定義乙個叫做todo的記錄。指定了預設值。31 rr test.hrl todo 在shell裡面讀入記錄的定義。rr 是read recor...