【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
上一篇下一篇

猜你喜欢

热点阅读