婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Erlang中的映射組Map詳細介紹

Erlang中的映射組Map詳細介紹

熱門標簽:地圖標注如何弄全套標 股票配資電銷機器人 外呼系統(tǒng)會封嗎 電銷機器人 深圳 萬利達綜合醫(yī)院地圖標注點 在電子版地圖標注要收費嗎 武漢AI電銷機器人 南京電銷外呼系統(tǒng)哪家好 實體店地圖標注怎么標

主要是遇到 Map匹配的問題,所以順便回憶一下 Erlang 中的映射組 Map,在其它語言中被稱作 Hash 哈希或者 Dict 字典。

Erlang 從 R17 版本開始支持映射組

創(chuàng)建映射組

Erlang 中的映射組用結構 #{} 表示,創(chuàng)建一個映射組可以這樣

復制代碼 代碼如下:

% 不管你怎么排序,最終結果都是按鍵的字典順序排列的
#{ name => "wittyfox", age => 19 }.
% => #{age => 20,name => "wittyfox"}

% 也可以創(chuàng)建一個空的映射組
#{}.
% => #{}

更新映射組

映射組可以更新,所謂的更新是創(chuàng)建一個新的映射組,因為 Erlang 中的變量是不可改變的。

復制代碼 代碼如下:

% 現(xiàn)在的我
Me = #{ name => "wittyfox", age => 19 }.
% => #{age => 19,name => "wittyfox"}

% 過年啦,又長一歲了,變成嶄新的我啦
NewMe = Me#{ age => 20 }.
% => #{age => 20,name => "wittyfox"}

% 當然也可以直接修改
#{ name => "wittyfox", age => 19 }#{ age => 20 }.
% => #{age => 20,name => "wittyfox"}

=> 用于創(chuàng)建或更新一個映射,如果鍵存在,則更新它,否則就創(chuàng)建一個新的映射。如果一不小心某個鍵拼寫錯誤,Oops.

復制代碼 代碼如下:

% 本來想更新 age,結果一不小心拼寫錯誤,創(chuàng)建了一個新的映射
Me#{ aeg => 20 }.
% => #{aeg => 20,age => 19,name => "wittyfox"}.

為了避免這種情況,還有一種更新映射的方法,使用 :=,它只能用來更新映射,而不能創(chuàng)建新的映射,如果鍵不存在,就會拋出一個 badarg 異常。
復制代碼 代碼如下:

% 不存在 aeg 鍵,拋出 badarg 異常
Me#{ aeg := 20 }.
% ** exception error: bad argument ... blabla

% 只能更新已存在的映射
Me#{ age := 20 }.
% => #{age => 20,name => "wittyfox"}

兩種操作符的區(qū)別

1.=> 可以用來更新映射或者創(chuàng)建新的映射
2.:= 只能更新映射,在鍵不存在時會拋出異常
所以有下面的總結

創(chuàng)建映射組時

只能使用 =>,:= 只能更新映射而無法創(chuàng)建新的映射,而創(chuàng)建映射組時需要創(chuàng)建若干映射

復制代碼 代碼如下:

#{ name := "wittyfox", age := 19 }.
% * 1: only association operators '=>' are allowed in map construction

映射組匹配的

左邊只能使用 :=,=> 在鍵不存在時可以創(chuàng)建新的映射,而映射組匹配可以部分匹配 (只匹配左邊擁有的部分) ,所以匹配是沒有意義的

復制代碼 代碼如下:

% 部分匹配: 我們只想取出 age,所以我們只關心參數(shù)中有沒有 age 這個映射
#{ age := Age } = Me.
% => #{age => 19,name => "wittyfox"}

% Age.
% => 19

% 不合法的匹配
#{ age => Age } = Me.
% * 1: illegal pattern


為了更好的發(fā)現(xiàn)錯誤

只在創(chuàng)建映射組或明確需要創(chuàng)建新的映射時使用 =>,而在其它場合均使用 :=

復制代碼 代碼如下:

 % 這里是創(chuàng)建映射組,只能使用 =>
 new() ->
     {ok, {?MODULE, #{name => "wittyfox", age => 19}}}.

 % 這里是匹配,只能使用 :=
 show({?MODULE, #{name := Name, age := Age}}) ->
     io:format("Name: ~p, Age: ~p~n", [Name, Age]).


注意

上面的更新映射,創(chuàng)建新的映射以及匹配可以同時針對多個映射,這里只是作為例子而只選擇一對映射。

映射組操作

Erlang 中的 maps 模塊用于操作映射組

映射組的創(chuàng)建及屬性

復制代碼 代碼如下:

% 創(chuàng)建映射組
maps:new().
% => #{}

% 返回所有鍵
maps:keys(Me).
% => [age,name]

% 判斷是否存在鍵
maps:is_key(age, Me).
% => true
maps:is_key(aeg, Me).
% => false

% 按鍵的順序返回所有值
maps:values(Me).
% =>[19,"wittyfox"]

% 映射數(shù)量
maps:size(Me).
% => 2

% 還可以使用 erlang:map_size/1
% 此函數(shù)可以用于 Guard,maps 模塊內部也是使用此函數(shù)的
map_size(Me).
% => 2

映射的增加、刪除、獲取

復制代碼 代碼如下:

% maps:get/2 在鍵不存在時會拋出異常
maps:get(age, Me).
% => 19

% maps:get/3 在鍵不存在時會返回第三個參數(shù)的值
maps:get(aeg, Me, 20).
% => 20

% 用于更新或創(chuàng)建映射,類似于 =>
% 所謂更新,只是返回更新后的新的映射組,原映射組并不會改變
maps:put(gender, male, Me).
% => #{age => 19,gender => male,name => "wittyfox"}

% 用于更新映射,類似于 :=,鍵不存在時會拋出 badarg 異常
maps:update(age, 20, Me).
% => #{age => 20,name => "wittyfox"}

% 刪除一個映射,鍵不存在時相當于什么都沒做,不會拋出異常
maps:remove(age, Me).
% => #{name => "wittyfox"}

% 查找鍵的值,鍵不存在時返回 error
maps:find(age, Me).
% => {ok, 19}

maps:find(aeg, Me).
% => error

映射組的歸并

復制代碼 代碼如下:

% 歸并兩個映射組,注意第二個參數(shù)是創(chuàng)建新的映射組,所以只能用 =>
maps:merge(Me, #{ age => 10 }).  
% => #{age => 10,name => "wittyfox"}

% 相當于
Me#{ age => 10 }.

映射組與列表之間的轉換

復制代碼 代碼如下:

% 返回映射元組對的列表
maps:to_list(Me).
% => [{age,19},{name,"wittyfox"}]

% 從列表構建映射組
maps:from_list([]).
% => #{}

maps:from_list([{name, "wittyfox"}, {age, 19}]).
% => #{age => 19,name => "wittyfox"}

映射組的遍歷

復制代碼 代碼如下:

% 對映射組的每對映射執(zhí)行操作
% X, Y 分別為一對映射的鍵和值
maps:map(fun (X, Y) -> io:format("~p => ~p~n", [X, Y]) end, Me). 
% age => 19                                             % 輸出
% name => "wittyfox"                                    % 輸出
% => #{age => ok,name => ok}                            % 返回值

% X, Y 分別為一對映射的鍵和值,V 為上一次迭代的結果,0 為迭代的初始值
% 這里簡單的用于每次迭代時值加 1,結果就是映射組的映射數(shù)量
maps:fold(fun (X, Y, V) -> V + 1 end, 0, Me).
% => 2

映射組中映射的選取

返回第一個參數(shù)中指定的鍵的映射組成的映射組

復制代碼 代碼如下:

maps:with([], Me).
% => #{}

maps:with([age], Me).
% => #{age => 19}

% 鍵可以不存在
maps:with([aeg], Me).
% => #{}


返回鍵不再第一個參數(shù)的列表中的映射組成的映射組
復制代碼 代碼如下:

maps:without([], Me).
% => #{age => 19,name => "wittyfox"}

maps:without([age], Me).
% => #{name => "wittyfox"}

% 鍵也可以不存在
maps:without([age, neme], Me).
% => #{name => "wittyfox"}


注意

值得一提的是 maps 模塊中的若干函數(shù),比如 map, fold, with 和 without 都是使用 maps:to_list/1 轉到列表,然后使用 lists 模塊的工具處理,然后使用 maps:from_list/1 轉回到映射組的。

標簽:泰安 濟源 臺州 武威 汕頭 濟寧 廣東 安徽

巨人網絡通訊聲明:本文標題《Erlang中的映射組Map詳細介紹》,本文關鍵詞  Erlang,中的,映射,組,Map,詳細,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Erlang中的映射組Map詳細介紹》相關的同類信息!
  • 本頁收集關于Erlang中的映射組Map詳細介紹的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    精油按摩中文字幕久久| 国产一区二区电影| 国产精品一区二区久久不卡| 91视频观看视频| 精品国产髙清在线看国产毛片| 中文字幕一区二区三区视频| 午夜精品福利一区二区三区av | 成人av动漫网站| 欧美夫妻性生活| 亚洲激情在线激情| 国产高清无密码一区二区三区| 欧美人牲a欧美精品| 国产精品污网站| 捆绑调教一区二区三区| 91国偷自产一区二区开放时间| 2020日本不卡一区二区视频| 三级在线观看一区二区| 色哟哟亚洲精品| 国产精品国产自产拍在线| 精品亚洲国内自在自线福利| 欧美日韩国产bt| 夜夜嗨av一区二区三区| aaa国产一区| 国产精品色婷婷久久58| 国产suv精品一区二区三区| 亚洲精品在线免费观看视频| 五月天一区二区三区| 欧美亚洲日本国产| 亚洲一线二线三线久久久| av色综合久久天堂av综合| 久久精品视频一区二区三区| 韩国毛片一区二区三区| 日韩手机在线导航| 久久99精品国产麻豆婷婷| 91精品一区二区三区久久久久久| 日韩中文字幕亚洲一区二区va在线| 欧美色图激情小说| 一区二区三区中文在线观看| 91蜜桃传媒精品久久久一区二区| 国产精品毛片久久久久久久| av午夜一区麻豆| 亚洲人成7777| 在线看不卡av| 午夜激情综合网| 日韩视频免费观看高清完整版在线观看 | 欧美一区二区三区视频免费播放| 亚洲一区欧美一区| 欧美影院一区二区三区| 日韩有码一区二区三区| 日韩视频在线你懂得| 国内精品写真在线观看| 中文字幕精品在线不卡| 91视频.com| 婷婷激情综合网| 欧美成人国产一区二区| 国产精品69久久久久水密桃| 国产精品乱码一区二区三区软件| 91视频www| 日韩黄色片在线观看| 337p日本欧洲亚洲大胆色噜噜| 国产99精品在线观看| 亚洲色图欧洲色图婷婷| 欧美日韩高清一区二区不卡 | 91 com成人网| 国产在线一区观看| 亚洲精品成人天堂一二三| 日韩一区二区三区电影| 国产成人在线观看免费网站| 一区二区三区中文字幕电影| 日韩精品一区二区三区三区免费| 国产suv一区二区三区88区| 亚洲成人av中文| 久久久亚洲高清| 欧美亚洲动漫精品| 国产成a人无v码亚洲福利| 亚洲综合激情网| 久久婷婷综合激情| 欧美亚洲国产bt| 成人小视频免费在线观看| 亚洲成av人片在线观看无码| 久久久久88色偷偷免费| 欧美在线视频日韩| 国产很黄免费观看久久| 日韩电影在线看| 成人欧美一区二区三区白人| 日韩亚洲欧美成人一区| 在线一区二区三区四区五区| 久久99国产精品免费网站| 亚洲美女区一区| 中文av一区二区| 日韩欧美aaaaaa| 欧美性大战xxxxx久久久| 国产成人三级在线观看| 蜜桃av一区二区| 一区二区日韩电影| 欧美韩国日本一区| 精品1区2区在线观看| 欧美日韩一二区| 91在线视频网址| 国产一区二区久久| 美腿丝袜亚洲三区| 日韩专区中文字幕一区二区| 亚洲精品五月天| 中文字幕一区视频| 国产精品二三区| 久久久不卡网国产精品一区| 日韩美女视频在线| 日韩欧美中文字幕一区| 欧美日韩成人综合| 欧美日韩在线观看一区二区| eeuss影院一区二区三区| 夫妻av一区二区| 国产一区视频导航| 激情都市一区二区| 久久av老司机精品网站导航| 日本aⅴ亚洲精品中文乱码| 免费在线观看视频一区| 喷水一区二区三区| 美腿丝袜亚洲三区| 激情六月婷婷综合| 国产一区 二区| 成人午夜激情视频| www.激情成人| 色婷婷综合久久久| 欧美日韩激情一区二区| 日韩色在线观看| 精品久久久三级丝袜| 2020国产精品自拍| 中文字幕国产一区| 中文字幕一区二区在线观看 | 欧美少妇xxx| 欧美精品在线视频| 精品国产免费一区二区三区四区 | 欧美一级xxx| 久久噜噜亚洲综合| 中文字幕人成不卡一区| 亚洲品质自拍视频| 五月天激情综合网| 精品制服美女丁香| 国产精品综合二区| 一道本成人在线| 在线成人午夜影院| 久久精品亚洲精品国产欧美kt∨| 国产精品久久久久7777按摩| 亚洲国产精品嫩草影院| 国产一区美女在线| 色欲综合视频天天天| 91精品国产全国免费观看| 久久综合九色综合97婷婷| 国产精品久久久一区麻豆最新章节| 亚洲人快播电影网| 蜜臀av性久久久久av蜜臀妖精| 成人午夜视频免费看| 欧美日韩高清影院| 国产精品你懂的| 午夜国产精品影院在线观看| 岛国一区二区三区| 911精品国产一区二区在线| 久久综合一区二区| 亚洲一区二区三区在线播放 | 奇米精品一区二区三区在线观看 | 91啦中文在线观看| 在线国产电影不卡| 精品1区2区在线观看| 奇米精品一区二区三区在线观看一| 福利一区在线观看| 日韩欧美一区二区三区在线| 亚洲欧洲美洲综合色网| 蜜桃av噜噜一区二区三区小说| 91小视频在线| 欧美国产日产图区| 日韩高清电影一区| 91福利国产精品| 国产精品亲子乱子伦xxxx裸| 秋霞午夜鲁丝一区二区老狼| 91看片淫黄大片一级在线观看| 欧美精品一区二区在线播放| 亚洲香肠在线观看| 成人午夜av电影| 精品国内二区三区| 麻豆专区一区二区三区四区五区| 欧美三级韩国三级日本一级| 1024亚洲合集| 成人午夜免费电影| 国产亚洲精品资源在线26u| 青青草国产精品亚洲专区无| 色天使久久综合网天天| 中文字幕制服丝袜一区二区三区 | 青青草成人在线观看| 欧美性受xxxx黑人xyx性爽| 国产精品久久福利| 成人性生交大片免费看中文| 国产亚洲综合av| 久久电影网电视剧免费观看| 日韩一区二区免费高清| 日韩二区三区在线观看| 欧美一区在线视频| 蜜桃一区二区三区四区| 91精品久久久久久久91蜜桃| 日本在线不卡视频一二三区|