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


Elixir Keyword.merge用法及代碼示例


Elixir語言中 Keyword.merge 相關用法介紹如下。

用法一

merge(keywords1, keywords2)
@spec merge(t(), t()) :: t()

將兩個關鍵字列表合並為一個。

keywords2 中給定的所有鍵(包括重複鍵)添加到 keywords1 ,覆蓋任何現有鍵。

不保證返回關鍵字中鍵的順序。

例子

iex> Keyword.merge([a: 1, b: 2], [a: 3, d: 4])
[b: 2, a: 3, d: 4]

iex> Keyword.merge([a: 1, b: 2], [a: 3, d: 4, a: 5])
[b: 2, a: 3, d: 4, a: 5]

iex> Keyword.merge([a: 1], [2, 3])
** (ArgumentError) expected a keyword list as the second argument, got: [2, 3]

用法二

merge(keywords1, keywords2, fun)
@spec merge(t(), t(), (key(), value(), value() -> value())) :: t()

將兩個關鍵字列表合並為一個。

keywords2 中給出的所有鍵(包括重複鍵)添加到 keywords1 。調用給定的函數來解決衝突。

如果 keywords2 有重複的鍵,它會為 keywords1 中的每個匹配對調用給定的函數。

不保證返回關鍵字中鍵的順序。

例子

iex> Keyword.merge([a: 1, b: 2], [a: 3, d: 4], fn _k, v1, v2 ->
...>   v1 + v2
...> end)
[b: 2, a: 4, d: 4]

iex> Keyword.merge([a: 1, b: 2], [a: 3, d: 4, a: 5], fn :a, v1, v2 ->
...>   v1 + v2
...> end)
[b: 2, a: 4, d: 4, a: 5]

iex> Keyword.merge([a: 1, b: 2, a: 3], [a: 3, d: 4, a: 5], fn :a, v1, v2 ->
...>   v1 + v2
...> end)
[b: 2, a: 4, d: 4, a: 8]

iex> Keyword.merge([a: 1, b: 2], [:a, :b], fn :a, v1, v2 ->
...>   v1 + v2
...> end)
** (ArgumentError) expected a keyword list as the second argument, got: [:a, :b]

相關用法


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