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


Elixir Kernel.put_in用法及代碼示例


Elixir語言中 Kernel.put_in 相關用法介紹如下。

用法一

put_in(path, value)
(宏)

通過給定的 path 將值放入嵌套結構中。

這類似於 put_in/3 ,除了路徑是通過宏提取而不是傳遞列表。例如:

put_in(opts[:foo][:bar], :baz)

相當於:

put_in(opts, [:foo, :bar], :baz)

這也適用於嵌套結構和 struct.path.to.value 指定路徑的方式:

put_in(struct.foo.bar, :baz)

請注意,為了使此宏工作,完整路徑必須始終對此宏可見。有關支持的路徑表達式的更多信息,請查看 get_and_update_in/2 文檔。

例子

iex> users = %{"john" => %{age: 27}, "meg" => %{age: 23}}
iex> put_in(users["john"][:age], 28)
%{"john" => %{age: 28}, "meg" => %{age: 23}}

iex> users = %{"john" => %{age: 27}, "meg" => %{age: 23}}
iex> put_in(users["john"].age, 28)
%{"john" => %{age: 28}, "meg" => %{age: 23}}

用法二

put_in(data, keys, value)
@spec put_in(Access.t(), [term(), ...], term()) :: Access.t()

將值放入嵌套結構中。

除非 key 是函數,否則使用 Access 模塊根據給定的 keys 遍曆結構。如果鍵是一個函數,它將按照 get_and_update_in/3 中的指定調用。

例子

iex> users = %{"john" => %{age: 27}, "meg" => %{age: 23}}
iex> put_in(users, ["john", :age], 28)
%{"john" => %{age: 28}, "meg" => %{age: 23}}

如果任何中間值為零,它將引發:

iex> users = %{"john" => %{age: 27}, "meg" => %{age: 23}}
iex> put_in(users, ["jane", :age], "oops")
** (ArgumentError) could not put/update key :age on a nil value

相關用法


注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Kernel.put_in(path, value)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。