Kernel.pop_in

You're seeing just the macro pop_in, go back to Kernel module for more information.

Pops a key from the nested structure via the given path.

This is similar to pop_in/2, except the path is extracted via a macro rather than passing a list. For example:

pop_in(opts[:foo][:bar])

Is equivalent to:

pop_in(opts, [:foo, :bar])

Note that in order for this macro to work, the complete path must always be visible by this macro. For more information about the supported path expressions, please check get_and_update_in/2 docs.

Examples

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

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

In case any entry returns nil, its key will be removed and the deletion will be considered a success.