转换为关键字列表
iex(32)> Map.to_list(%{one: 1, two: 2})
[one: 1, two: 2]
转换为结构
通过一个Map
来构造一个Struct
# 首先定义结构
defmodule User do
defstruct username: nil, mail: nil
end
# 其次调用`Kernal.struct/2`构造一个结构
struct(User, %{
name: "segmentfault",
mail: "segmentfault@163.com"
})
模式匹配
iex(7)> %{name: name, mail: mail} = %{name: "segmentfault", mail: "segmentfault@163.com"}
%{mail: "segmentfault@163.com", name: "segmentfault"}
iex(8)> name
"segmentfault"
iex(9)> mail
"segmentfault@163.com"
匹配不存在的key
iex(10)> %{name: name, tel: tel} = %{name: "segmentfault", mail: "segmentfault@163.com"}
** (MatchError) no match of right hand side value: %{mail: "segmentfault@163.com", name: "segmentfault"}
Map 语法
# 空Map
%{}
# Map箭头语法
%{"name" => "segmentfault", "mail" => "segmentfault@163.com"}
# 当所有key为原子的简写形式
# 注意冒号后面一定要有一个空格
%{name: "segmentfault", mail: "segmentfault@163.com"}
计算一个Map的大小
iex(10)> map = %{name: "segmentfault", mail: "segmentfault@163.com"}
%{mail: "segmentfault@163.com", name: "segmentfault"}
iex(11)> map_size(map)
2
更新一个Map的值
iex(16)> map = %{name: "segmentfault", mail: "segmentfault@163.com"}
%{mail: "segmentfault@163.com", name: "segmentfault"}
iex(17)> %{map | name: "new"}
%{mail: "segmentfault@163.com", name: "new"}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。