erlang精要(25)-映射组(键值对)的建立及更新、匹配及使用

9> Y1=#{a=>12,b=>16}. 
#{a => 12,b => 16}
10> Y2=#{c=>120,d=>160}.
#{c => 120,d => 160}
11> Y2.
#{c => 120,d => 160}
12> Y1.
#{a => 12,b => 16}
13> Y3=Y2.
#{c => 120,d => 160}
14> Y3.
#{c => 120,d => 160}
15> Y4=Y3#{f=>1010}.
#{c => 120,d => 160,f => 1010}
16> Y4.
#{c => 120,d => 160,f => 1010}
17> Y5=Y2#{a:=1200}. 
** exception error: {badkey,a}
     in function  maps:update/3
        called as maps:update(a,1200,#{c => 120,d => 160})
     in call from erl_eval:'-expr/5-fun-0-'/2 (erl_eval.erl, line 259)
     in call from lists:foldl/3 (lists.erl, line 1267)
18> Y5=Y2#{c:=1200}.
#{c => 1200,d => 160}
19> Y2.
#{c => 120,d => 160}
20> Y5.
#{c => 1200,d => 160}
21> 

建立方式:

#{键1=>值1,......,键n=>值n}

更新(包括增加新的键)

#{键1=>值1,......,键n=>值n}

更新(只能更新现有键,新建键会出错

#{键1:=值1,......,键n=值n}

注意以上均是返回一个新映射组

maps:new() -> #{} %返回一个空的映射组
erlang:is_map(M)  %如果M是映射组返回true否则返回false。可以用在关卡测试或函数主体中。
map:to_list(M) -> [{K1, V1}, ... ,{Kn, Vn}] %把映射组M里的所有键和值转换成一个键值列表,键值在生成的列表里严格按照升序排列。
maps:from_list([{K1, V1}, ...., {Kn, Vn}]) -> M %把一个包含键值对的列表转换成一个映射组M。如果同样的键不止一次的出现,就使用列表里第一键所关联的值,后续的值都会被忽略。
maps:size(Map) -> numberOfEntries %返回映射组里的条目数量。
maps:is_key(Key, Map) -> boolean()%如果映射组包含一个键未key的项就返回true,否则返回false。
maps:get(Key, Map) -> val %返回映射组里与Key关联的值,否则抛出一个异常错误。
maps:find(Key, Map) -> {ok, Value} | error。%返回映射组与Key关联的值,否则返回error。
maps:keys(Map) -> [Key1, ..., KeyN] %返回映射组所含的键列表,按升序排序
maps:remove(Key, M) -> M1%返回一个新映射组M1,除了键未Key的项(如果有的话)被移除外,其他与M一致。
maps:without([Key1, ..., KeyN], M) -> M1 %返回一个新映射组M1,它是M的复制,但移除了带有[Key1,..., KeyN]列表里这些键的元素。
maps:difference(M1, M2) -> M3 %M3是M1的复制,但移除了那些与M2里的元素具有相同键的元素
%他的行为类似于下面的定义
maps:difference(M1, M2) ->
    maps:without(maps:keys(M2), M1).

统计字符个数

-module(learnerl).
-export([count_char/1]).
%程序:刘兴
%https://aipro.blog.csdn.net/

count_char(Str)->
    count_char(Str,#{}).


count_char([H|T],X)->
    case maps:is_key(H,X) of
        false -> count_char(T, X#{ H => 1 });
        true  -> #{ H := Count } = X,
                 count_char(T, X#{ H := Count+1 })
    end;
count_char([],X)->
    X.
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 鲸 设计师:meimeiellie 返回首页