當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。