当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Elixir Access.key用法及代码示例


Elixir语言中 Access.key 相关用法介绍如下。

用法:

key(key, default \\ nil)
@spec key(key(), term()) ::
  access_fun(data :: struct() | map(), current_value :: term())

返回一个访问映射/结构中给定键的函数。

返回的函数通常作为访问器传递给 Kernel.get_in/2 Kernel.get_and_update_in/3 和朋友。

如果键不存在,则返回的函数使用默认值。这可用于指定默认值并安全地遍历丢失的键:

iex> get_in(%{}, [Access.key(:user, %{}), Access.key(:name, "meg")])
"meg"

这在使用更新函数时也很有用,允许我们在遍历数据结构进行更新时引入值:

iex> put_in(%{}, [Access.key(:user, %{}), Access.key(:name)], "Mary")
%{user: %{name: "Mary"}}

例子

iex> map = %{user: %{name: "john"}}
iex> get_in(map, [Access.key(:unknown, %{}), Access.key(:name, "john")])
"john"
iex> get_and_update_in(map, [Access.key(:user), Access.key(:name)], fn prev ->
...>   {prev, String.upcase(prev)}
...> end)
{"john", %{user: %{name: "JOHN"}}}
iex> pop_in(map, [Access.key(:user), Access.key(:name)])
{"john", %{user: %{}}}

如果访问的结构不是映射或结构,则会引发错误:

iex> get_in([], [Access.key(:foo)])
** (BadMapError) expected a map, got: []

相关用法


注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Access.key(key, default \\ nil)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。