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

主頁 > 知識(shí)庫 > Erlang中的映射組Map詳細(xì)介紹

Erlang中的映射組Map詳細(xì)介紹

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

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

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

創(chuàng)建映射組

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

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

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

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

更新映射組

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

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

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

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

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

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

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

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

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

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

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

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

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

創(chuàng)建映射組時(shí)

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

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

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

映射組匹配的

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

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

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

% Age.
% => 19

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


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

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

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

 % 這里是創(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)建新的映射以及匹配可以同時(shí)針對多個(gè)映射,這里只是作為例子而只選擇一對映射。

映射組操作

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

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

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

% 創(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 模塊內(nèi)部也是使用此函數(shù)的
map_size(Me).
% => 2

映射的增加、刪除、獲取

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

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

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

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

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

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

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

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

映射組的歸并

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

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

% 相當(dāng)于
Me#{ age => 10 }.

映射組與列表之間的轉(zhuǎn)換

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

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

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

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

映射組的遍歷

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

% 對映射組的每對映射執(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 為上一次迭代的結(jié)果,0 為迭代的初始值
% 這里簡單的用于每次迭代時(shí)值加 1,結(jié)果就是映射組的映射數(shù)量
maps:fold(fun (X, Y, V) -> V + 1 end, 0, Me).
% => 2

映射組中映射的選取

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

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

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

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

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


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

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 轉(zhuǎn)到列表,然后使用 lists 模塊的工具處理,然后使用 maps:from_list/1 轉(zhuǎn)回到映射組的。

標(biāo)簽:泰安 濟(jì)源 臺(tái)州 武威 汕頭 濟(jì)寧 廣東 安徽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Erlang中的映射組Map詳細(xì)介紹》,本文關(guān)鍵詞  Erlang,中的,映射,組,Map,詳細(xì),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Erlang中的映射組Map詳細(xì)介紹》相關(guān)的同類信息!
  • 本頁收集關(guān)于Erlang中的映射組Map詳細(xì)介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    精品粉嫩aⅴ一区二区三区四区| 最新久久zyz资源站| 亚洲午夜在线电影| 欧美精品一区二区三区很污很色的 | 日韩欧美的一区| 91在线无精精品入口| 日本欧美一区二区在线观看| 中文字幕中文乱码欧美一区二区| 欧美日韩一区久久| av亚洲精华国产精华精华| 久久国产免费看| 国产精品欧美综合在线| 日韩欧美中文一区二区| 欧美日韩一卡二卡三卡| 国产福利91精品一区二区三区| 亚洲视频中文字幕| 91精品国产品国语在线不卡| 色婷婷综合激情| 懂色av中文一区二区三区| 精品亚洲成a人| 久久99久久久久久久久久久| 午夜精品一区在线观看| 成人欧美一区二区三区1314| 4438x亚洲最大成人网| 国内精品伊人久久久久av影院| 亚州成人在线电影| 一区二区高清在线| 亚洲精品欧美综合四区| 1000精品久久久久久久久| 中文字幕一区二区不卡| 中文字幕亚洲电影| 亚洲欧洲性图库| 亚洲乱码国产乱码精品精小说| 最新国产成人在线观看| 亚洲六月丁香色婷婷综合久久| 国产精品久久久久久久久图文区| 国产精品网站一区| **性色生活片久久毛片| 国产精品久久久久久久久快鸭| 国产精品色哟哟| 亚洲欧美怡红院| 亚洲区小说区图片区qvod| 亚洲精品一二三区| 亚洲国产精品视频| 日韩黄色小视频| 久久精品噜噜噜成人88aⅴ| 美女一区二区视频| 激情综合一区二区三区| 日韩福利电影在线观看| 免费三级欧美电影| 久久成人精品无人区| 国产成人在线视频播放| 国产91丝袜在线播放0| 99re亚洲国产精品| 欧美精品成人一区二区三区四区| 欧美一级黄色录像| 欧美国产精品专区| 亚洲一区二区三区四区五区中文| 日本亚洲最大的色成网站www| 国产精品538一区二区在线| 色婷婷av一区二区三区软件| 欧美高清性hdvideosex| 精品国产凹凸成av人导航| 国产精品三级视频| 一区二区不卡在线播放| 免费欧美在线视频| 91官网在线免费观看| 久久婷婷成人综合色| 一个色综合av| www.视频一区| 久久综合狠狠综合久久综合88| 亚洲国产视频a| 成人免费高清在线| 欧美一区二区视频在线观看 | 91麻豆精品国产91久久久| 欧美高清视频www夜色资源网| 久久久久久久久久电影| 一区二区三区四区国产精品| 欧美午夜不卡在线观看免费| 亚洲电影在线免费观看| 欧美一三区三区四区免费在线看| 一区二区视频在线| 一区av在线播放| 日韩视频在线你懂得| 欧美大片拔萝卜| 久久精品国产网站| 久久99久久久久久久久久久| 亚洲r级在线视频| 国产在线精品一区二区夜色 | 欧美成人福利视频| 免费在线观看不卡| 国产尤物一区二区| 亚洲伦理在线免费看| 日本不卡一区二区三区高清视频| 日韩欧美在线网站| 亚洲色图在线视频| 欧美一区二区三区男人的天堂| 26uuu国产在线精品一区二区| 国产亚洲污的网站| 亚洲综合色区另类av| 99久久精品国产观看| 欧美理论电影在线| 国产精品一线二线三线精华| 91丨porny丨在线| 日韩av中文字幕一区二区三区| 成人中文字幕合集| 久99久精品视频免费观看| 色网站国产精品| 韩国精品主播一区二区在线观看| 亚洲色图色小说| 久久九九全国免费| 91精品国产麻豆国产自产在线 | 3atv一区二区三区| 欧美日韩精品一区二区| 国产亚洲欧美日韩在线一区| 在线免费观看不卡av| 日韩精品在线一区二区| 欧美肥胖老妇做爰| 国产精品一品视频| 93久久精品日日躁夜夜躁欧美| 欧美日韩久久久一区| 欧美专区在线观看一区| 天天综合网 天天综合色| av一区二区三区黑人| 国产精品久久久久婷婷| 久久精品国产久精国产爱| 91麻豆精品国产自产在线观看一区| 一色桃子久久精品亚洲| 久久精品在这里| 国产一区在线看| 国产一区二区三区黄视频 | 91麻豆免费观看| 国产精品乱码一区二三区小蝌蚪| 成人一级片网址| 久久久激情视频| 国产欧美一区二区精品性色超碰| 青青国产91久久久久久| 日韩精品免费视频人成| 在线亚洲人成电影网站色www| 成人精品国产免费网站| 亚洲免费看黄网站| bt欧美亚洲午夜电影天堂| 国产盗摄视频一区二区三区| 久久精品夜色噜噜亚洲aⅴ| 亚洲国产精品黑人久久久| 国产精品88888| 91蜜桃婷婷狠狠久久综合9色| 国产精品日日摸夜夜摸av| 亚洲免费成人av| 五月婷婷久久丁香| 91精品国产色综合久久不卡电影| 日韩精品一区二区三区视频在线观看 | 国产精品一区二区视频| 国产一区二区三区精品欧美日韩一区二区三区 | 91网站视频在线观看| 成人动漫中文字幕| 一区二区三区资源| 蜜臀精品久久久久久蜜臀 | 在线播放一区二区三区| 欧美精选午夜久久久乱码6080| 日韩一区欧美二区| 国产999精品久久| 一区二区三区国产精品| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲精品一区二区在线观看| 亚洲日本在线观看| 欧美美女喷水视频| 国产精品狼人久久影院观看方式| 99久久婷婷国产精品综合| 中文字幕一区在线| 国产日韩欧美精品在线| 97精品国产露脸对白| 成人午夜电影久久影院| 一区二区三区中文字幕电影| 亚洲国产一区二区a毛片| 51精品国自产在线| 成人精品视频网站| 久久影音资源网| 在线精品视频一区二区三四| 欧美日韩国产综合一区二区三区| 看片网站欧美日韩| 在线观看视频一区二区| 色综合天天综合网天天狠天天 | 91在线视频在线| 国产精品一卡二卡在线观看| 国产黄人亚洲片| 99在线精品免费| 精品美女在线观看| 精品久久久久久最新网址| 亚洲图片你懂的| 日韩—二三区免费观看av| 国产精品中文字幕日韩精品 | 日本一不卡视频| 亚洲午夜激情av| 色婷婷综合久久久久中文| 2021国产精品久久精品| 亚洲综合久久久久| 日韩欧美一级特黄在线播放| 亚洲永久精品国产| 色哟哟日韩精品|