Elixir 0.13后基于Erlang 17增加了新的Map数据结构,要想使用Map, Erlang R17 是要求的最低版本。
Map 基础
Map.new 会创建一个空的map, %{}
即是空map
iex(1)> Map.new
%{}
也可以使用 Map.new(pairs), Map.new(list, transform) 创建新的map
Map.new(pairs)
iex> Map.new [{:b, 1}, {:a, 2}]
%{a: 2, b: 1}
Map.new(list, transform)
iex> Map.new ["a", "b"], fn x -> {x, x} end
%{"a" => "a", "b" => "b"}
也可以直接用 %{} 创建map
%{ hello: :world, with: :keywords }
%{ :hello => :world, with: :keywords }
map可以以map.key的形式获取value,比如
iex(3)> a = %{ hello: :world, with: :keywords }
%{hello: :world, with: :keywords}
iex(4)> a.hello
:world
iex(5)> a.with
:keywords
api
put(map, key, val) 添加一个键值对
iex(1)> m = %{ hello: :world, with: :keywords }
iex(2)> Map.put(m, :hello1, "world1")
%{hello: :world, hello1: "world1", with: :keywords}
delete(map, key) 删除一个key, 返回新的map
iex(1)> m = %{ hello: :world, with: :keywords }
iex(2)> Map.delete(m, :hello)
%{with: :keywords}
take(dict, keys) 获取某些值,返回新的map
iex(15)> Map.take(m, [:a, :b])
%{a: "world1", b: "world1"}
merge(map1, map2) 合并两个map
iex(1)> m1 = %{hello: "world"}
%{hello: "world"}
iex(2)> m1
%{hello: "world"}
iex(3)> m2 = %{hello1: "world1"}
%{hello1: "world1"}
iex(4)> m2
%{hello1: "world1"}
iex(5)> m3 = Map.merge(m1, m2)
%{hello: "world", hello1: "world1"}
参考:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。