欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【Erlang】十七、映射组 (map) (键值对)

程序员文章站 2022-03-31 08:36:21
映射组(map)特点创建映射组添加键值对修改键的值映射组相关的内置函数特点映射组的语法与记录相似,不同之处是省略了 记录名,并且键-值分隔符是 => 或 :=映射组是键值对的关联性集合映射组的键可以是任何 全绑定的数据类型(数据结构里没有任何绑定的变量)映射组的各个元素根据键进行排序在不改变键的情况下更新映射组是一种高效的操作映射组有明确的顺序创建映射组> erlEshell V8.0> X = #{ a => 1, b => 2 }.#{a =...


特点

  • 映射组的语法与记录相似,不同之处是省略了 记录名,并且键-值分隔符是 =>:=
  • 映射组是键值对的关联性集合
  • 映射组的键可以是任何 全绑定的数据类型(数据结构里没有任何绑定的变量)
  • 映射组的各个元素根据键进行排序
  • 不改变键的情况下更新映射组是一种高效的操作
  • 映射组有明确的顺序

创建映射组

> erl
Eshell V8.0
> X = #{ a => 1, b => 2 }.
#{a => 1,b => 2}

添加键值对

> erl
Eshell V8.0
> X = #{ a => 1, b => 2 }.
#{a => 1, b => 2}
> X2 = X#{ c => 3}.
#{a => 1, b => 2, c => 3}

修改键的值

> erl
Eshell V8.0
> X = #{ a => 1, b => 2 }.
#{a => 1, b => 2}

%% 方法1:如果改键不存在,会添加该键值对
> X2 = X#{ c => 5}.
#{a => 1, b => 2, c => 5}

%% 方法2, 如果该键不存在,会抛出异常
> X3 = X#{ c:= 8}.
#{a => 1, b => 2, c => 8}

:= 修改键值时,如果该键不存在,会抛出异常


映射组相关的内置函数

  • maps:new() 返回一个空的映射组 #{}
  • erlang:isMap(M) 返回 M 是否是一个映射组,通常用在关卡或函数主体中
  • maps:to_list(M) 把映射组M里所有键和值转换成一个键值列表。键在生成的列表里严格按照升序排列 [{K1,V1}, ...{Kn,Vn}]
  • maps:form_list([{K1,V1}, ...{Kn,Vn}]) 把一个包含键值对的列表转换成映射组M。如果出现相同的键,将会跳过,使用第一次出现的键值对
  • maps:size(M) 取键值对数量
  • maps:is_key(Key, Map) 判断映射组中是否包含一个键为Key的键值对
  • maps:get(Key, Map) 取键为Key的值,如果该键不存在,抛出异常错误
  • maps:find(Key, Map) 查找键为Key的值,如果存在返回 {ok, Value},否则返回 error
  • maps:keys(Map) 返回Map的所有键的列表,按升序排列
  • maps:remove(Key, Map) 返回一个新的不包含该Key的映射组
  • maps:without([Key1,...,KeyN], Map) 返回一个新的不包含该[Key1,...,KeyN]的映射组
  • maps:difference(M1, M2) 返回新的映射组M3,M3是M1的复制,但是不包含M2中所包含的键

本文地址:https://blog.csdn.net/qq_31099163/article/details/108984046

相关标签: Erlang