Kernel.update_in

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

update_in(path, fun)

View Source (macro)

Updates a nested structure via the given path.

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

update_in(opts[:foo][:bar], &(&1 + 1))

Is equivalent to:

update_in(opts, [:foo, :bar], &(&1 + 1))

This also works with nested structs and the struct.path.to.value way to specify paths:

update_in(struct.foo.bar, &(&1 + 1))

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> update_in(users["john"][:age], &(&1 + 1))
%{"john" => %{age: 28}, "meg" => %{age: 23}}

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