将列表与一个项目(地图)转换为地图

时间:2018-01-19 12:58:28

标签: elixir

您如何将[%{"hello" => 123}]转换为%{"hello" => 123}

我可以Enum.at(map, 0)但看起来并不好。

2 个答案:

答案 0 :(得分:4)

您可以使用模式匹配:

iex(1)> [map] = [%{"hello" => 123}]
iex(2)> map
# => %{"hello" => 123}

iex(1)> [%{"hello" => value} = map] = [%{"hello" => 123}]
iex(2)> map
# => %{"hello" => 123}
iex(3)> value
# => 123

如果您需要"hello"密钥的值。

答案 1 :(得分:3)

虽然@guitarman的答案是完全正确的,但还有Kernel.hd/1而不是列表的头部:

iex> [%{"hello" => 123}] |> hd()
%{"hello" => 123}

区别在于一个元素列表([map] =)的模式匹配会在空列表上引发MatchError(上面引发ArgumentError),后者将成功返回列表包含多个元素时的值。