Erlang中的映射组中的映射组Map详细介绍详细介绍
主要介绍了Erlang中的映射组Map详细介绍,本文讲解了创建映射组、更新映射组、两种操作符的区别、映射的
增加、删除、获取等内容,需要的朋友可以参考下
主要是遇到 Map匹配的问题,所以顺便回忆一下 Erlang 中的映射组 Map,在其它语言中被称作 Hash 哈希或者 Dict 字典。
Erlang 从 R17 版本开始支持映射组
创建映射组创建映射组
Erlang 中的映射组用结构 #{} 表示,创建一个映射组可以这样
复制代码 代码如下:
% 不管你怎么排序,最终结果都是按键的字典顺序排列的
#{ name => "wittyfox", age => 19 }.
% => #{age => 20,name => "wittyfox"}
% 也可以创建一个空的映射组
#{}.
% => #{}
更新映射组更新映射组
映射组可以更新,所谓的更新是创建一个新的映射组,因为 Erlang 中的变量是不可改变的。
复制代码 代码如下:
% 现在的我
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"}
=> 用于创建或更新一个映射,如果键存在,则更新它,否则就创建一个新的映射。如果一不小心某个键拼写错误,Oops.
复制代码 代码如下:
% 本来想更新 age,结果一不小心拼写错误,创建了一个新的映射
Me#{ aeg => 20 }.
% => #{aeg => 20,age => 19,name => "wittyfox"}.
为了避免这种情况,还有一种更新映射的方法,使用 :=,它只能用来更新映射,而不能创建新的映射,如果键不存在,就会
抛出一个 badarg 异常。
复制代码 代码如下:
% 不存在 aeg 键,抛出 badarg 异常
Me#{ aeg := 20 }.
% ** exception error: bad argument ... blabla
% 只能更新已存在的映射
Me#{ age := 20 }.
% => #{age => 20,name => "wittyfox"}
两种操作符的区别两种操作符的区别
1.=> 可以用来更新映射或者创建新的映射
2.:= 只能更新映射,在键不存在时会抛出异常
所以有下面的总结
创建映射组时创建映射组时
只能使用 =>,:= 只能更新映射而无法创建新的映射,而创建映射组时需要创建若干映射