Elixir v1.1.0 Access behaviour
Dictionary-like access to data structures via the foo[bar]
syntax.
This module also empowers Kernel
s nested update functions
Kernel.get_in/2
, Kernel.put_in/3
, Kernel.update_in/3
and
Kernel.get_and_update_in/3
.
Examples
Out of the box, Access works with built-in dictionaries: Keyword
and Map
:
iex> keywords = [a: 1, b: 2]
iex> keywords[:a]
1
iex> map = %{a: 1, b: 2}
iex> map[:a]
1
iex> star_ratings = %{1.0 => "★", 1.5 => "★☆", 2.0 => "★★"}
iex> star_ratings[1.5]
"★☆"
Furthermore, Access transparently ignores nil
values:
iex> keywords = [a: 1, b: 2]
iex> keywords[:c][:unknown]
nil
The key comparison must be implemented using the ===
operator.
Summary
Functions
Fetches the container’s value for the given key
Gets the container’s value for the given key
Gets and updates the container’s value for the given key, in a single pass
Types
Functions
Specs
fetch(t, term) :: {:ok, term} | :error
Fetches the container’s value for the given key.
Specs
get(t, term, term) :: term
Gets the container’s value for the given key.
Gets and updates the container’s value for the given key, in a single pass.
The argument function fun
must receive the value for the given key
(or
nil
if the key doesn’t exist in container
). It must return a tuple
containing the get
value and the new value to be stored in the container
.
This function returns a two-element tuple.
The first element is the get
value, as returned by fun
.
The second element is the container, updated with the value returned by fun
.