【erlang】优雅的获取Map数据
2018-11-02 本文已影响0人
夏澪
今天,观摩大佬代码的时候,偶然发现大佬代码中取 map 内的数据的方式特别简洁,看起来也很优雅,遂放弃了 原先 map:find/2 和 map:get/2 方法,经我测试,此方法求的 key 和原先的是子集关系,也就是说即使有 10 对 kv 对,用这方法写的时候只要写需要的 key 而非使用全部的 key。
模板:
Map = #{
<<"header">> => #{
<<"probe_sn">> => <<"it's probe sn">>,
<<"probe_mac">> => <<"it's probe mac">>
},
<<"content_data">> => #{
<<"probe_starttime">> => <<"2018-11-02 16:01:00">>,
<<"probe_device">> => [
#{
<<"src_mac">> => <<"it's mac">>,
<<"detail">> => [
#{<<"entry_time">> => <<"2018-11-01 18:53:00">>, <<"signal_strength">> => <<"4G">>,
<<"device_type">> => <<"mi">>}]
},
#{
<<"src_mac">> => <<"it's mac2">>,
<<"detail">> => [
#{<<"entry_time">> => <<"2018-11-01 19:08:00">>, <<"signal_strength">> => <<"5G">>,
<<"device_type">> => <<"mi">>}
]
}]
}}
取数据的方法:
#{
<<"header">> := #{
<<"probe_sn">> := ProbeSn
},
<<"content_data">> := #{
<<"probe_starttime">> := ProbeStartTime,
<<"probe_device">> := [ <<"src_mac">> := SrcMac ]
}} = Map